############################################################################## # 在Python中使用Unicode # 20061013 by daineng@nj.cpsecure # # 在Python-Shell下使用 (Linux & Windows) # ############################################################################## # 这里所说到的Unicode采用2个字节方案 '汉'的Unicode编码是 6C49 ############################################################################## ## From Unicode to Local # 直接输入Unicode的编码号得到Unicode字符串 >>> s = u'/u6c49' >>> s u'/u6c49' >>> print s 汉 # 在Windows下由于默认的code-page是'bg2312'或'gbk'所以可以直接显示 # 如果默认的code-page不是这个,如Linux下,就会有异常抛出 Traceback (most recent call last): File "<stdin>", line 1, in ? File "/usr/local/lib/python2.4/encodings/iso8859_15.py", line 18, in encode return codecs.charmap_encode(input,errors,encoding_map) UnicodeEncodeError: 'charmap' codec can't encode character u'/u6c49' in position 0: character maps to <undefined> # 必须指定编码 >>> print s.encode('gbk') # 查看编码 >>> s.encode('gbk') '/xba/xba' # 这个是'汉'在GBK中的编码,GB2312也是这样 # 平时在文件中看到的汉字就是这个编码 ############################################################################## ## From Local to Unicode # 输入其它编码的字符 >>> s = '/xba/xba' # 或 >>> s = '汉' >>> s '/xba/xba' >>> print s 汉 >>> s.decode('gbk') u'/u6c49' ############################################################################## ## From Local to Other # 如果我们有一个UTF8编码的汉字字符(gbk编码) >>> u = '/xe6/xb1/x89' # '汉'的 UTF8 编码 >>> print u.decode('utf8').encode('gbk') # UTF-8 和 GBK 或其它本地编码的关系 虽然它们都是编码方式,但GBK的编码将和系统使用的字符的编码结果一致,也就是 说,编码结果是可以直接正常显示出来的。而 UTF-8 的编码仅仅作为Unicode的实 现(为了节省字节空间,一般不直接保存Unicode,而是编码后再保存,UTF-8就是 Unicode编码保存的实现方式之一),它的结果一般不能直接显示。 从实现上来看Unicode的顺序可能与与本地编码的顺序完全没有关系,所以与本地编 码的转换很可能需要一个巨大的map型数据,而 UTF-8 编码完全可以只用几行代码 实现。 ############################################################################## ## Summary decode(local) (local) -----------------> (unicode) encode(local) (unicode) -----------------> (local) # 如果local编码和本地字符集的编码对应,那么就能够正常显示 ############################################################################## ## Others ascii -> gb2312 -> gbk -> gb18030 windows的内码仍然是 GBK |
Python中的Unicode
最新推荐文章于 2024-09-23 22:55:50 发布