原创python中文编码问题:控制窗口能输出中文,到文本文件里乱码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了原创python中文编码问题:控制窗口能输出中文,到文本文件里乱码相关的知识,希望对你有一定的参考价值。

遇到一个问题:控制窗口能正常输出中文,>到文本文件里却是乱码。最后解决了,总结一下Python中文编码的坑。

技术分享技术分享

开始感觉非常奇怪,想第一行为什么是正常的?之后注意到文本文件为ANSI编码,第一行在代码里面是字符串的形式输出来的,而且代码的文本格式也为ANSI。

后面不正常的数据是在列表用utf-8编码输出来的。开始想把第一行用utf-8输出来,把代码改为s.decode(‘gbk‘).encode(‘utf-8‘) ,发现结果还是不行。因为直接输入的字符串是按照代码文件的编码来处理的。

之后把列表中的数据用 str(i).decode(‘utf-8‘).encode(‘gbk‘)处理,结果就正确了。

技术分享

————————————————————————————————————————————————————————————————————————

此外遇到个错误:SyntaxError: (unicode error) ‘utf8‘ codec can‘t decode byte 0xc0 in position 0: invalid start byte

问题原因:脚本文件所用的编码是ANSI,而不是utf-8的编码,所以,u"中文",无法识别,而 去notepad+中,格式->转为utf-8编码,后,再保存文件,再去运行脚本,就可以支持u"中文"了。

当然,对应的unicode(“中文”)这样的做法,起始是最安全的,其不会受到你当前python脚本文件所用编码的影响。

 

以上是关于原创python中文编码问题:控制窗口能输出中文,到文本文件里乱码的主要内容,如果未能解决你的问题,请参考以下文章

python json.dumps() 中文乱码问题

在中ultraedit编写的python程序输出窗口汉字为乱码怎么解决

原创python中文编码问题深入分析:python2.7文件读写中文编码问题

Python之Win字符编码详解

window 控制台解决中文乱码

9Python全栈之路系列之Win字符编码深解