分享

ascii和unicode

 Tech-d 2014-05-29
Python 里面的编码和解码也就是 unicode 和 str 这两种形式的相互转化。编码是 unicode -> str,相反的,解码就是 str -> unicode 。


字符串在Python内部的表示是unicode编码,因此,在做编码转换时,通常需要以unicode作为中间编码,即
先将其他编码的字符串解码(decode)成unicode,再从unicode编码(encode)成另一种编码

decode的作用是将其他编码的字符串转换成unicode编码,如:
str1.decode('gb2312'),
表示将gb2312编码的字符串str1转换成unicode编码。

uni2.encode('gb2312')
表示将unicode编码为str, 用gb2312编码

因此,转码的时候一定要先搞明白,字符串str是什么编码,然后decode成unicode,然后再encode成其他编码.


代码中字符串的默认编码与代码文件本身的编码一致如果是在utf8的文件中,该字符串就是utf8编码,如果是在gb2312的文件中,则其编码为gb2312

获取系统编码: sys.getdefaultencoding()如:在命令行中, sys.getdefualtencoding()结果为ascii。
则一个从系统磁盘读取的含中文的文件名字符串name的编码也为ascii,此时要想打印出正确的name,需要做:
>>> name # name = '\xd0\xc2\xbc\xc7\xc2\xbc'
>>> newName = name.decode('gbk') #newName = u'\u6587\u4ef6\u66f4\u65b0\u8bb0\u5f5'
>>> print newName #文件记录更新


当使用sys来设置编码方式时:
import sys 
reload(sys) # Python2.5 初始化后会删除 sys.setdefaultencoding 这个方法,我们需要重新载入 
sys.setdefaultencoding('utf-8') 


获取一个字符串编码的方式:
        import chardet
        encoding = chardet.detect(fullPath)
        




    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多