python 编码问题(文件的编码与编码声明的关系)

python的编码问题,特别是出现中文乱码,困扰我多时。昨天晚上总算是有点明白了, 我就简单的把我探索所得到的结论写下来,如果有错误的地方,欢迎拍砖。

一、首先是文件的存储编码、文件开头处的编码声明和控制台的输出编码都可能影响到程序的结果。

二、我的理解是python解释器用文件开头处声明的编码来解释文件存储的内容,如果两者不一致,很可能就会有乱码或者运行失败的可能。而控制台的输出直接跟print语句后的内容有关,如果两者的编码一致,或者是控制台支持print内容的编码,那么输出就不是乱码,如果不支持,则乱。

三、网络传输中,好像Unicode编码的还不能直接传输,建议encode为utf-8编码。

四、建议:对有中文的文件,都保持为utf-8格式,在文件的开头处都指明编码coding:utf-8,文件中的内容都统一成Unicode编码,当要输出,或者显示时转成需要的编码,对文件输入或者其他方式输入的数据,要规范成Unicode,这样会减少编码带来的麻烦。