作者maboroshiga (幻)
看板C_Sharp
標題[問題] 讀取文字檔 ANSI 轉 Unicode
時間Thu Jul 16 23:17:59 2009
我利用 StreamReader 想讀取一ANSI編碼檔案進listbox
但listbox卻將中文顯示為方框
而讀取unicode檔案是可以的
StreamReader file = new StreamReader(openFileDialog1.FileName);
string content = file.ReadToEnd();
不過在讀ANSI編碼時
偵測到的編碼卻是 UTF-8:
file.CurrentEncoding.EncodingName; //值為 "Unicode (UTF-8)"
所以我嘗試用下面方法 將content從utf8轉成unicode:
Encoding utf8 = Encoding.UTF8;
Encoding unicode = Encoding.Unicode;
byte[] contentByte = utf8.GetBytes(content); //string轉byte[]
contentByte = Encoding.Convert(utf8, unicode, contentByte);
content = Encoding.Unicode.GetString(contentByte); //byte[]轉string
轉出來還是跟原本一樣 中文字都方框
請問是哪個環節出錯了? 感謝~!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 123.204.168.133
1F:推 NDark:我記得 讀ANSI不該會出錯,也應該不用轉. 07/16 23:21
2F:→ maboroshiga:還是分行split出錯了 我用content.Split('\n'); 07/16 23:32
3F:→ maboroshiga:改用while跟file.ReadLine() 還是不行orz 07/16 23:42
4F:→ kangkangtm:應該不用轉吧,我也是照原PO前兩行那樣寫... 07/17 11:35
5F:→ kangkangtm:讀檔時要再加一個參數=> Encoding.Default 07/17 11:37
6F:→ pico2k:請檢查ListBox的Font屬性 07/17 13:06
7F:→ bdvstg:C#內的字串都是UTF8 而你說的ANSI我猜是指Big5吧 07/31 15:05
8F:→ bdvstg:new StreamReader(op.., Encoding.GetEncoding("big5")); 07/31 15:11
9F:→ bdvstg:建構的時候有多載可以指定編碼 你設成big5試試 (如上) 07/31 15:13