• 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")
    
    • 2.开头设置默认编解码方式
    	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也是有前提的,就是之前已经加载过的模块,如果没有加载过的,就无重谈起重新加载了。
  • 相关阅读:
    JSON
    必须使用角色管理工具 安装或配置microsoft.net framework 3.5
    Backbone.js之view篇(三)
    MSDN Webcast 资源
    JS获取select 当前选种值
    我理解的js闭包
    javascript基础温习(一)
    js动态添加删除行
    delphi 版 sqlHelper第二版
    2012末日没有到来,继续我们的2013
  • 原文地址:https://www.cnblogs.com/hystill/p/13783197.html
Copyright © 2020-2023  润新知