python u34转中文 python 中文转码
转载
为什么需要sys.setdefaultencoding(“utf-8”)
- 因为python转码是通过unicode作为中间码的。
- 比如字符串 x = “你们”,本身是str,
首先我们指定了文件编码uft8,所以x是utf8编码的。 - 如果要转化gb18030, 默认是x用默认解码方式(ASCII)decode成中间码 unicode -> encode成gb18030
- 如果x是abc这些ascii字符本身ascii和utf8方式是一样的,不会报错;
- 但是x是中文,就不能按ascii方式解码了。。怎么办呢?
- 1 . 自己指定解码方式,在编码
y = x.decode("utf-8").encode("gb18030")
import sys
reload(sys)
sys.setdefaultencoding("utf-8")
为什么reload(sys)呢
- 因为模块/lib/site.py删除了sys.setdefaultencoding这个函数。
site.py 有什么作用
- 是解释器初始化时自动导入的,这个模块的作用是:自动将第三方模块路径加入到sys.path中。
import的实质
- import sys导入语句,只是导入了一个对sys的引用,因为别人已经提前导入了sys,后面的模块使用sys都是引用这个对象。
-
而作为初始化模块site.py,导入了许多内建模块包括sys,而且删除了sys.setdefaultencoding这个方法,后面你写的模块,只要导入sys,都是没有这个方法的。
- 所以需要reload一把,reload也是有前提的,就是之前已经加载过的模块,如果没有加载过的,就无重谈起重新加载了。
本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。