首页 > 代码库 > 【原创】python中文编码问题:控制窗口能输出中文,到文本文件里乱码

【原创】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中文编码问题:控制窗口能输出中文,到文本文件里乱码