yycGIS

我们曾如此渴望命运的波澜,到最后才发现:人生最曼妙的风景,竟是内心的淡定与从容。 我们曾如此期盼外界的认可,到最后才知道:世界是自己的,与他人毫无关系。

Less is more, more is different!

导航

python编码(三)

python 有str object 和 unicode object 两种字符串,都可以存放字符的字节编码,但是他们是不同的type,这一点很重要,也是为什么会有encode(编码)和decode(解码)。

encode 和 decode在pyhton 中的意义可表示为:

                                    encode
         unicode -------------------------> str
         unicode <--------------------------str
                                    decode

几种常用法:

str_string.decode('codec') 是把str_string转换为unicode_string, codec是源str_string的编码方式;
unicode_string.encode('codec') 是把unicode_string 转换为str_string,codec是目标str_string的编码方式;
str_string.decode('from_codec').encode('to_codec') 可实现不同编码的str_string之间的转换;

比如:

1 >>> t='长城'
2 >>> t
3 '\xb3\xa4\xb3\xc7'
4 >>> t.decode('gb2312').encode('utf-8')
5 '\xe9\x95\xbf\xe5\x9f\x8e'

str_string.encode('codec') 是先调用系统的缺省codec去把str_string转换为unicode_string,然后用encode的参数codec去转换为最终的str_string. 相当于str_string.decode('sys_codec').encode('codec')。

unicode_string.decode('codec') 基本没有意义,unicode 在python里只用一种unicode编码,UTF16或者UTF32(编译python时就已经确定),没有编码转换的需要。 

注:缺省codec在site-packages下的sitecustomize.py文件中指定,比如:

1 import sys
2 sys.setdefaultencoding('utf-8')

 

 

posted on 2014-03-30 21:54  yycGIS  阅读(315)  评论(0编辑  收藏  举报