本人献丑先,将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()