












1、Python & Unicode (《Dive into python》)
>>> s = u'Dive in'
>>> s
u'Dive in'
>>> print s
Dive in
还记得我说过:需要从一个 unicode 得到一个正常字符串时,Python 通常默认将 unicode 转换成 ASCII 吗?嗯,这个默认编码模式是一个可以定制的选项。
>>> import sys
>>> sys.getdefaultencoding()
'iso-8859-1'
>>> s = u'La Pe\xf1a'
>>> print s
La Peña
如果你打算在你的 Python 代码中保存非 ASCII 字符串,你需要在每个文件的顶端加入编码声明来指定每个 .py 文件的编码。这个声明定义了 .py 文件的编码为 UTF-8:
现在,想想 XML 中的编码应该是怎样的呢?不错,每一个 XML 文档都有指定的编码。重复一下,ISO-8859-1 是西欧语言存放数据的流行编码方式。KOI8-R 是俄语流行的编码方式。编码――如果指定了的话――都在 XML 文档的首部。
2、Python正则表达式
有了上面的基础,实践一个小应用问题的解决,用python正则表达式取匹配串(当然包含中文了)
仅英文情况下(ASCII),下面的代码是可以的,test.py(文件编码为默认)
Code
import re
p=r'\$([^\$\s]+)'
s=u'dsd$dd$111'
m=re.findall(p,s)
print m
output: [u
'dd', u'111']当字符串s中有中文时,须如下方可,test1.py(文件编码也是utf-8)
Code
#!/usr/bin/python
# -*- coding:utf-8 -*-
import re
p=r'\$([^\$\s]+)'
s=u'dsd$哈哈哈$大苏打'
m=re.findall(p,s)
print m
# output: [u
'\u4f60\u7684\u601d\u5ff5', u'\u5927\u82cf\u6253\u6492']for i in m:
print i.encode('GBK')
# output:你的思念
Code
当然也可以在pattern串中用\u声明具体中文(或其他文)字符,不采用上述的方式(unicode->utf-8)
相关python unicode i/o参见这篇文章http://bakey1985.blogspot.com/2009/01/python-unicode-io.html
3、Python web 开发
用python的web framework进行web开发时,同样需要考虑编码问题,统一编码(python sys、所有文件编码、code文件内的编码声明)避免n多问题
python2.x下对unicode的支持,至少需要你对其有基本的了解方容易解决问题,当然不能跟java、c#相比了,毕竟是从非unicode发展过来的。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。