今天在用core实现读取文件内容时出现了中文乱码的问题,特此记录下。
代码如下:
static void Main(string[] args){string path = "F:\\1.txt";StreamReader sr = new StreamReader(path, Encoding.Default);String line;while ((line = sr.ReadLine()) != null){Console.WriteLine(line.ToString());}sr.Close();Console.ReadLine();}
txt文件信息如下:
执行后读取的信息中文乱码:
那么默认编码改为“GB2312”编码试试:
static void Main(string[] args){string path = "F:\\1.txt";StreamReader sr = new StreamReader(path, Encoding.GetEncoding("GB2312"));String line;while ((line = sr.ReadLine()) != null){Console.WriteLine(line.ToString());}sr.Close();Console.ReadLine();}
执行出现异常:
'GB2312' is not a supported encoding name. For information on defining a custom encoding, see the documentation for the Encoding.RegisterProvider method.
“GB2312”不支持编码名称。有关定义自定义编码的信息,请参阅编码文档。RegisterProvider方法。
解决办法:
1、下载安装System.Text.Encoding.CodePages。
步骤:
右键“依赖项”,点击“管理NuGet程序包”
在“浏览”搜索System.Text.Encoding.CodePages,选择第一个下载安装。
2、 使用“Encoding.RegisterProvider”方法进行注册。
static void Main(string[] args){Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);string path = "F:\\1.txt";StreamReader sr = new StreamReader(path, Encoding.GetEncoding("GB2312"));String line;while ((line = sr.ReadLine()) != null){Console.WriteLine(line.ToString());}sr.Close();Console.ReadLine();}
最后结果,读取文本信息成功。