.Net Core读取文件时中文乱码如何解决
这篇文章主要介绍“.NetCore读取文件时中文乱码如何解决”,在日常操作中,相信很多人在.NetCore读取文件时中文乱码如何解决问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”.NetCore读取文件时中文乱码如何解决”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
背景在使用core web api上传txt文档的时候本来很顺利的,但是一测试发现读取的中文内容是乱码的,很是纳闷。
出于经验,立马把代码的Encoding.Default改成 Encoding.uft8, 发现还是不行。后面索性把上传的文件另存为下,特地选择带有bom的utf8选项。
但是发现还是乱码。郁闷。
问题于是在本能的百度下,发现方法一大堆,但是没有一个可以解决问题的。
进去之后,豁然开朗。里面是这么写的,关于Encoding.Default 属性的定义是这样的。
.NET Framework 中的默认属性在 Windows 桌面上的 .NET Framework 中, Default 属性始终获取系统的活动代码页并创建 Encoding 与其对应的对象。活动代码页可能是 ANSI 代码页,其中包括 ASCII 字符集以及不同于代码页的其他字符。由于所有 Default 基于 ANSI 代码页的编码都将丢失数据,因此请考虑 Encoding.UTF8 改用编码。在 U + 00 到 U + 7F 范围内,UTF-8 通常是相同的,但可以在不丢失的情况下在 ASCII 范围外对字符进行编码。
.NET Core 上的默认属性在 .NET Core 中,Default属性始终返回UTF8Encoding。在运行 .NET Core 应用程序的所有操作系统(Windows、Linux 和 macOS)上都支持 UTF-8。
解决办法So,.NET Framework 中默认编码是GB2312,而在 .NET Core 中不支持,若想使用必须得先注册编码
代码如下
varcompleteFilePath=Path.Combine(filePath,saveName);varstream=formFile.OpenReadStream();Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);Encodingencoding=Encoding.GetEncoding("gb2312");usingvarreader=newStreamReader(stream,encoding);varinput=reader.ReadToEnd();
到此,问题解决。
附.Net Core下读取配置文件中文乱码.Net Core下的配置文件是json格式,读取配置文件时若是咱们设置有中文会出现乱码,如何解决呢。json
网上找了个方法,只要将appsetting.json用记事本打开,而后另存为格式选择UTF-8就能够app
而后读取配置文件的中文信息时就不会出现乱码了blo
到此,关于“.NetCore读取文件时中文乱码如何解决”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。