01
2021
11

C#.NET读取TXT乱码问题的解决

  • 原来能正常在读取的文本,在.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)。


« 上一篇下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。