我用以下的简单语句读一个文本文件,发现得到的字符串汉字都是乱码,英文和数字却都很正常,怎么回事?任何处理?
StreamReader sr = new StreamReader(@"C:\a.txt");
string s = sr.ReadToEnd();改用方法sr.ReadLine()也一样对汉字是乱码!加参数Encoding.Unicode等5种编码方式,都不行!怎么办?
StreamReader sr = new StreamReader(@"C:\a.txt");
string s = sr.ReadToEnd();改用方法sr.ReadLine()也一样对汉字是乱码!加参数Encoding.Unicode等5种编码方式,都不行!怎么办?
解决方案 »
- DevExpress.XtraVerticalGrid.vGridControl控件取值问题
- C#的datagridview使用checkbox控件如何实现选中的值传给打印功能
- 求书!有关 C# 用 DX9.0 SDK 做 2D\3D 的书籍!
- ASP.NET急求模态对话框传的值给模态子窗口C#程序调用~
- 是否C#2.0之前没有 Console.ReadKey 这个写法(我是初学者)
- 求教啊,C#一直提示"未将对象引用设置到对象的实例",怎么回事啊?
- 新手请教,如何制作水晶报表!
- 为什么SqlDataSource1来源是带参数存储过程时,GridView1不能分页和排序?
- c#中定义一个未知类型怎么做?
- 求大神解决,急用!!!
- GDI+的问题 ,如何在winform 上画一个等腰梯形的按钮
- 如何得到网页中的相对虚拟路径!!!!!
//解释一下,System.Text.Encoding.Default是取系统默认编码方式!
StreamReader sr = new StreamReader(@"C:\a.txt", System.Text.Encoding.GetEncoding(936), true);
来解决。true是让Framework来检测Byte Order Mask(BOM),如果文件有BOM,就会根据BOM设置成文件实际的编码,如果没有BOM,就按第二个参数所制定的编码来读取。
这是一种比较好的兼容方式,如果不设置true,那么就只能读取GB2312文件,而无法读取Utf-8了。Default依赖于操作系统的语言设置,如果读简体中文,就用gb2312