开启左侧

C#写csv文本文件含有中文出现乱码?

[复制链接]
绝地武士 发表于 2018-9-1 18:15:31 | 显示全部楼层 |阅读模式
利用StreamWriter写文件到文件中,中文全部变成了乱码:
TIM截图20180901175956.png

怎么解决呢???
利用UE查看文件编码情况:
TIM截图20180901180102.png
去查查我们的第一个字符的所有编码对比下:
TIM截图20180901180448.png
TIM截图20180901180428.png
发现好像是UTF-8编码的?

查询MSDN看看:
TIM截图20180901180702.png

确实默认是UTF-8编码,汉字一般三个字节存储,在我们的电脑上(默认是本地的GBK编码)打开,肯定乱码了!

而且,我的字符串中除了中文还有英文的逗号,也就是说汉字占两个字节,但是英文必须是一个字节,那设置GBK或者GB2312不就好了么?
结果发现Encoding里面没有这个编码,查看了ASCII和Unicode、UTF系列编码,都不符合当前的情况?至于为什么不符合我们慢慢谈论就可以了。

那就只有默认编码了,这个默认编码就是指跟随我们的系统的编码,还好我们都是中文编码,所以这个应该就可以!
写流对象设置文件流属性为:StreamWriter sw = new StreamWriter(fs,Encoding.Default); 默认编码;

编译过后,写一个文件看看
TIM截图20180901181220.png
发现中文的第一个字的编码已经变成2个字节了(D0 F2正好是我们第一个字的GBK编码),也就是默认的GBK生效了!
TIM截图20180901181202.png
至此,文件编码就修正过来了!
当然,为了全球通用的话,改成UTF8最好不过!
半分雨 发表于 2018-9-2 09:46:18 | 显示全部楼层
编码格式utf-8设置一下
芜湖小肖 发表于 2018-9-2 09:54:23 | 显示全部楼层
写文本文件含有中文出现乱码?
波士华 发表于 2018-9-2 10:23:32 | 显示全部楼层
乱码.png
加上Ecoding.UTF8就可以了,否则会出现乱码
芜湖小肖 发表于 2018-9-2 12:10:57 | 显示全部楼层
本帖最后由 芜湖小肖 于 2018-9-2 12:12 编辑

补充:1、在学员使用的Tools类里面,2、Log方法后面,true后加, Encoding.UTF8即可。3、换成题主的方式也可以,即在我们学员使用的Tools方法里面找到log方法添加, Encoding.Default亲测可以(StreamWriter SW1 = new StreamWriter(strPath,true, Encoding.Default);)。原理方面参看题主。
夜行人 发表于 2018-9-3 08:45:05 | 显示全部楼层
改变一下编码格式即可
hooper_he 发表于 2018-10-28 16:47:16 | 显示全部楼层
编码不对吧
万折东流 发表于 2020-1-3 08:50:36 | 显示全部楼层
楼主威武
Mr丶Tang 发表于 2020-1-3 22:05:58 | 显示全部楼层
编码用UTF-8,格式不对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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