none
如何預先判斷檔案編碼 RRS feed

  • 問題

  • 我在論壇中有看到大家都說要判斷檔案檔頭,我用UltraEdit也真到有看到檔頭資料,但是我的程式怎
    麼抓都抓不到它,可否請各位大大幫我看看到底程式哪裡有問題,謝謝啦~~

     

    1 string sFileName = "C:\\SMS.csv";  
    2 StreamReader objStreamReader = new StreamReader(sFileName);  
    3 for (int i = 0; i < 3; i++)  
    4 {  
    5     Console.WriteLine(objStreamReader.BaseStream.ReadByte().ToString());  
    6 }  
    7  
    8 objStreamReader.Close();  
    9  


    Microsoft Visual Studio 2005 SP1 C#
    Terence
    2009年3月18日 上午 02:21

解答

  • 這是 ANSI 編碼:
    34 78 49 50 48

    這是 UNICODE 編碼:
    255 254(FFFE) 34 0(") 78 0(N) 49 0(1) 50 0(2) 48 0(0)

    從你貼的內容來說,你原先的 csv 應該是 ANSI ...
    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    • 已標示為解答 TerenceLiang 2009年3月19日 上午 03:50
    2009年3月19日 上午 02:36

所有回覆

  • 那輸出的結果是啥?


    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    2009年3月18日 上午 04:04
  • 就只看到檔案實際的內容,而看不到檔頭(如:FE EE)
    Terence
    2009年3月18日 上午 05:24
  • ANSI 沒有檔頭,Excel 輸出的 csv 都只有 ANSI 格式
    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    2009年3月18日 上午 05:36
  • 我要讀的檔案並不是用 Excel 匯出的,只是被取名為 CSV 而已.....

    我有用 UltraEdit 實際去看過它,當用 16 進制模式看時,確實是有看到檔頭(FF FE)的


    Terence
    2009年3月18日 上午 09:24
  • 我只能說我測我自己的 Unicode 檔是正常的。


    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    2009年3月18日 上午 09:46
  • 感謝心冷熱情熄大大的提醒
    我自己用 notepad 產生一個 unicode 的檔案,真的也可以獨得到檔頭耶~~~

    可是我讀廠商提供的檔案時,依舊讀不到。

    我就用 notepad 把檔案打開,再另存一個檔案,而且也設成 unicode 格式,而且
    我用 UltreEdie 把兩個檔案打開來比對過,完全一樣。

    但是....我新存的檔就讀的到檔頭耶~~真怪。但是讀出的資料部分居然不一樣,
    是因為這樣才出問題嗎?


    實際資料前面幾位是:"N120

    原始檔用上面的程式輸出後,結果如下(只讀得出資料部分):
    34
    78
    49
    50
    48

    新的檔案輸出結果如下(有檔頭資料了):
    255
    254
    34
    0
    78
    0
    49
    0
    50
    0
    48


    Terence
    2009年3月19日 上午 01:51
  • 好像不同的檔案檔頭都不同吧。
    如果只是為了要去讀文字檔的話,只要在 StreamReader 的建構式參數中傳入 Encoding.UTF8 就能讀啦。
    小人物一枚。
    2009年3月19日 上午 02:09
    版主
  • 這是 ANSI 編碼:
    34 78 49 50 48

    這是 UNICODE 編碼:
    255 254(FFFE) 34 0(") 78 0(N) 49 0(1) 50 0(2) 48 0(0)

    從你貼的內容來說,你原先的 csv 應該是 ANSI ...
    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    • 已標示為解答 TerenceLiang 2009年3月19日 上午 03:50
    2009年3月19日 上午 02:36
  • 昏啊~~~
    因為我還是得用 UTF8 的格式才能看到裡面的中文,所以這檔應該就是傳說
    中『沒有BOM的UTF8檔案』吧!!!

    我在網路上找到不從檔頭判斷UTF8的程式了,感謝心冷熱情熄大大啦~~


    Terence
    2009年3月19日 上午 03:48