架构师_程序员_码农网

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 11692|回复: 2

[已解决] StreamReader读取文件时出现乱码的解决方案

[复制链接]
发表于 2018-4-13 16:11:20 | 显示全部楼层 |阅读模式
今天在做一个打开文件对话框OpenFileDialog时,需要对打开的文件进行读取,显示在在窗体中的RichTextBox中。但是在显示文件时,却发现显示的中文字符串出现乱码。代码的关键部分如下所示:
开始我也想到了是字符编码出了问题,于是我在初始化StreamReader时,给它加了字符编码参数,加了好几次,Encoding.Unicode,Encoding.UTF32,Encoding.UTF7,Encoding.UTF8,Encoding.ASCII,这些能加的编码方案我都试过了,结果都不行。


原来自从Windows 2000之后的操作系统在文件处理时默认编码采用Unicode,所以.Net 的文件默认编码也是Unicode。除非另外指定,StreamReader 的默认编码为 Unicode,而不是当前系统的 ANSI 代码页。但是文档大部分还是以ANSI编码储存,中文文本使用的是gb2312,所以才造成中文乱码的状况,也就是说在读取文本的时候要指定编码格式。


解决方法是:System.Text.Encoding.Default 告诉 StreamReader 目前操作系统的编码即可。






上一篇:.net/c# Xml,Json,Hessian,Protocol Buffers序列化对比
下一篇:.net/c# 使用Costura.Fody将DLL打包到EXE中
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
 楼主| 发表于 2018-4-13 17:11:39 | 显示全部楼层
本帖最后由 QWERTYU 于 2018-4-13 17:18 编辑

如果还是不行,可能是服务端对数据进行了压缩,以gzip为例,需要对数据先进行解压操作。

码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
发表于 2018-4-19 13:31:02 | 显示全部楼层
如果网页内容是用gzip压缩的,获取内容为乱码,解决办法有两种

第一种解决办法:

//
        // 摘要:
        //     获取或设置所使用的解压缩类型。
        //
        // 返回结果:
        //     一个 T:System.Net.DecompressionMethods 对象,该对象指示所使用的解压缩类型。
        //
        // 异常:
        //   T:System.InvalidOperationException:
        //     对象的当前状态不允许设置此属性。
        public DecompressionMethods AutomaticDecompression { get; set; }
下面一行代码就搞定,改动很小!!!




第二种解决办法:



码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:help@itsvse.com

QQ|手机版|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2024-3-28 21:48

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表