[問題] 讀取文字檔 ANSI 轉 Unicode

看板C_Sharp作者 (幻)時間16年前 (2009/07/16 23:18), 編輯推噓1(108)
留言9則, 5人參與, 最新討論串1/1
我利用 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

07/16 23:21, , 1F
我記得 讀ANSI不該會出錯,也應該不用轉.
07/16 23:21, 1F

07/16 23:32, , 2F
還是分行split出錯了 我用content.Split('\n');
07/16 23:32, 2F

07/16 23:42, , 3F
改用while跟file.ReadLine() 還是不行orz
07/16 23:42, 3F

07/17 11:35, , 4F
應該不用轉吧,我也是照原PO前兩行那樣寫...
07/17 11:35, 4F

07/17 11:37, , 5F
讀檔時要再加一個參數=> Encoding.Default
07/17 11:37, 5F

07/17 13:06, , 6F
請檢查ListBox的Font屬性
07/17 13:06, 6F

07/31 15:05, , 7F
C#內的字串都是UTF8 而你說的ANSI我猜是指Big5吧
07/31 15:05, 7F

07/31 15:11, , 8F
new StreamReader(op.., Encoding.GetEncoding("big5"));
07/31 15:11, 8F

07/31 15:13, , 9F
建構的時候有多載可以指定編碼 你設成big5試試 (如上)
07/31 15:13, 9F
文章代碼(AID): #1ANqIecm (C_Sharp)