Unicode基本概念

Unicode是计算机可以支持这个星球上多种语言的秘密武器。通过使用一个或者多个字节来表示一个字符的方法突破了ASCII的限制。Unicode可以表示超过90000个字符。

使用方式:a=u'hello' #Unicode String

String的内建函数str()和chr()并没有升级来处理Unicode,新的内建函数unicode()和unichar()可以看做是Unicode版本的str()和chr()。

Codec是什么?

codec是COder/DECoder的首字母组合。他定义了文本和二进制的转换方式,支持4中耳熟能详的编码方式:ASCII、IOS8859-1。utf-8、utf-16

编码解码:encode()函数解决了编码问题,decode()函数解决了解码问题

可以通过下面一个简单的例子来进行进一步的了解。

'''
An example of reading and writing Unicode String:writes
a Unicode String to a file in utf-8 and reads it back in
'''
CODEC='utf-8'
FILE='unicode.txt'    

hello_out=u'Hello World\n'
bytes_out=hello_out.encode(CODEC)
f=open(FILE,'w')
f.write(bytes_out)
f.close()

f=open(FILE,'r')
bytes_in=f.read()
f.close()
hello_in=bytes_in.decode(CODEC)
print hello_in

运行该程序,我们会得到如下输出:Hello World  同时在文件系统会多一个unicode.txt的文件,里面的内容和输出的一致。

上面说的处理Unicode的例子简单的让人感觉有点假。把Unicode运用到实际应用中,你需要遵守以下规则:
1、程序中出现字符串时候一定要加个前缀u
2、不要用str()函数,用unicode()函数代替
3、不要用过时的string模块——如果传给他的是非ASCII字符,他会把一切搞砸
4、不到必须时候不要在你的程序里编解码Unicod字符。只在你要写入文件或者数据库或者网络是,才调用encode()函数,相应的,只在你需要把数据读回来的时候才使用decode()函数。
注意这些,你就可以避免90%的由于Unicode引起的bug,现在的问题是剩下的10%是处理不了的,幸亏Python提供了大量的模板和库来替你处理这些问题。

 

posted on 2016-04-11 21:09  波比12  阅读(561)  评论(0编辑  收藏  举报

导航