作者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