关于汉字编码问题

Leejun527 2007-10-04 08:18:14
请看这段代码:
StreamReader sr = new StreamReader("../../text.txt",Encoding.Default);
string str = sr.ReadLine();
MessageBox.Show(str);
sr.Close();
其中text.txt中存放的是一行汉字。该代码可以成功读出汉字。但如果将Encoding.Default改为Encoding.Utf8,Utf7,Utf32或Unicode等其他编码方式则读出的是乱码。按理说Unicode就支持汉字的编码啊,但为什么是乱码呢?我被这几种编码搞晕了,请高手指点!
...全文
92 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Leejun527 2007-10-04
  • 打赏
  • 举报
回复
多谢lxcnn,我明白了。
-过客- 2007-10-04
  • 打赏
  • 举报
回复
try

StreamReader sr = new StreamReader("../../text.txt",Encoding.GetEncoding("gb2312"));

看下文件的编方式,保证编码一致就可以正确解码。你使用一种协议编码,然后用另一种协议去解码,当然无法保证数据被正确解码。

另外看下MSDN关于Encoding.Default的说明。系统的当前 ANSI 代码页的编码。不同的系统可能使用不同的编码作为默认编码,因此,从一个系统流入另一个系统的数据可能不会被正确转换。若要确保编码后的字节能够正确解码,请使用带前导码的 Unicode 编码(即 UTF8Encoding、UnicodeEncoding 或 UTF32Encoding)另一选择是使用较高级别的协议以确保使用同一格式进行编码和解码。

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧