【IT168 技术文档】本人献丑先,将unicode操作的经验点滴再贴一遍,希望能够起到抛砖引玉的作用,有不对的请指正。
1、要注意命令行下与GUI下显示有差别,测试最好在交互示环境下进行,因为GUI的显示模块对测试有影响
2、在2.3b1版本中,可以在源码文件上加上如下两行,不需解码即可识别中文字符,但使用unicode编码才可获得正确的中文处理
#!/usr/bin/env python # -*- coding: cp936 -*- import locale encoding = locale.getdefaultlocale()[1] s1 = unicode('中华人民共和国', encoding) s2 = '中华人民共和国' print s1.encode(encoding), s2 print len(s1), len(s2) # 输出:7 14
3、在sitecustomize.py文件中加入以下两句即支持中文(该文件Python会在启动时自动导入。)
import sys sys.setdefaultencoding('mbcs') # mbcs编码支持亚洲语言,包括中文,2.3b1版下也可用cp936编码(关于这些编码,希望有人能够作个专题阐述) >>> s = '中华人民共和国' # python会自动调用mbcs编码转换,使用时不需任何特殊处理 >>> print s 中华人民共和国 >>>
4、读写unicode文件
>>> u = unicode("中国", "mbcs") >>> u u'\u4e2d\u56fd' >>> print u 中国 >>> s = codecs.open("test-uft16.txt", "w", "mbcs") >>> s.write(u) # 写中文字符到文件 >>> s.close()