惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - 叶小钗
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Microsoft Security Blog
Microsoft Security Blog
罗磊的独立博客
大猫的无限游戏
大猫的无限游戏
美团技术团队
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
aimingoo的专栏
aimingoo的专栏
腾讯CDC
WordPress大学
WordPress大学
Apple Machine Learning Research
Apple Machine Learning Research
F
Fortinet All Blogs
G
Google Developers Blog
MongoDB | Blog
MongoDB | Blog
Microsoft Azure Blog
Microsoft Azure Blog
小众软件
小众软件
Engineering at Meta
Engineering at Meta
博客园_首页
B
Blog RSS Feed
D
Docker
M
MIT News - Artificial intelligence
爱范儿
爱范儿
I
InfoQ

博客园 - sharplife

CMMI的五个台阶 记个链接,RMS & Moss 文档保护 2010, Nginx + Apache, mod_wsgi serve python web application (test with TG2) CSSHttpRequest : cross domain ajax request for easy Pylons unicode document TurboGears 2.0 beta6 安装 严冬 感受危机 这就是生活了 汉字及英文字符的ascii表示 推荐阅读:如何读一本书 [转]做人做事~ [转]Create an XMLSerializer from a given XML string 十一结束~ 离开 css image crop tech c# 3.0 quick reference XML Entities 参考
Python 2.x Unicode 简记
sharplife · 2009-03-07 · via 博客园 - sharplife

1、Python & Unicode (《Dive into python》)

例 9.13. unicode 介绍

>>> s = u'Dive in'            1
>>> s
u'Dive in'
>>> print s 2
Dive in

还记得我说过:需要从一个 unicode 得到一个正常字符串时,Python 通常默认将 unicode 转换成 ASCII 吗?嗯,这个默认编码模式是一个可以定制的选项。

例 9.15. sitecustomize.py

1


import sys
sys.setdefaultencoding('iso-8859-1') 2

例 9.16. 设置默认编码的效果

>>> import sys
>>> sys.getdefaultencoding() 1
'iso-8859-1'
>>> s = u'La Pe\xf1a'
>>> print s 2
La Peña

例 9.17. 指定.py文件的编码

如果你打算在你的 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']
#没显示成中文缘于win cmd对unicode的支持,下面的方式可以令其显示中文

for i in m:
    print i.encode('GBK')
# output:你的思念 

大苏打
# cmd shell支持gbk,且上述中文字符有属于gbk范围
# 若encode成utf-8 cmd显示亦是乱码,但输出给web页面肯定没问题,因为浏览器支持utf-8啊

具体中文字符的匹配示例

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发展过来的。