原来能正常在读取的文本,在.NETCoer环境下,读取出来为??字符。这就是编码出问题。
使用下面函数来检查,编译出错。
Encoding ascii = Encoding.ASCII;//us-ascii Encoding unicode = Encoding.Unicode; Encoding ude = Encoding.Default;//gb2312 Encoding u7 = Encoding.UTF7; Encoding u8 = Encoding.UTF8; Encoding u32 = Encoding.UTF32; Encoding ubig = Encoding.BigEndianUnicode; Encoding ugb = Encoding.GetEncoding("gb2312"); var encode = new Encoding[] { ude, ascii, unicode, u7, u8, u32, ubig, ugb }; foreach (var ee in encode) { Console.WriteLine(ee.EncodingName);//显示当前编码名字 using (var bl_文件流 = new StreamReader("文本.txt", ee)) { Console.WriteLine(bl_文件流.ReadToEnd()); } } |
显示【ystem.ArgumentException:“'GB2312' is not a supported encoding name. 】
.net Coer解决:
在nuget中安装包 System.Text.Encoding.CodePages。
然后在 Encoding ugb = Encoding.GetEncoding("gb2312");前加上:
System.Text.Encoding.RegisterProvider (System.Text.CodePagesEncodingProvider.Instance);
.net 解决:
Encoding ugb = Encoding.GetEncoding("gb2312");
using (var bl_文件流 = new StreamReader(文件全名, ugb))
{
return bl_文件流.ReadToEnd();
}
小结:
在中文环境中Encoding.Default的就是Encoding.ASCII(GB2312),但是国际环境中为Encoding.ASCII(us-ascii)。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。