Python里的string 和 unicode (二)
2015-07-08 15:38
791 查看
先说一下,前面提到,print(string)的时候,如果string是按当前环境编码方式编码的,可以正常输出,不会乱码;如果string不是当前编码的,就会乱码。而print(unicode)是不会乱码的。why?应为print(unicode)的时候,会把unicode先转成当前编码,然后再输出。我没看过print的源码,不过估计是这样的。
string转unicode或者unicode转string,是很常见的操作。
string和unicode都有decode()和encode()方法。decode是string2unicode,encode自然就是unicode2string。看个例子(中文Windows2003下):
>>> a = '你好'
>>> a
'/xc4/xe3/xba/xc3'
>>> b = u'你好'
>>> c = a.decode('gbk') #gbk string to unicode
>>> b == c
True
>>> c
u'/u4f60/u597d'
>>> d = b.encode('gbk') #unicode to gbk string
>>> d == a
True
>>> d
'/xc4/xe3/xba/xc3'
>>> e = b.encode('utf-8') #unicode to utf-8 string
>>> e
'/xe4/xbd/xa0/xe5/xa5/xbd'
decode或者encode的时候,如果不指定编码方式,会按照缺省编码方式来处理。查看、设置缺省编码方式可以这样做:
>>> import sys
>>> sys.getdefaultencoding()
'ascii'
>>> reload(sys)
<module 'sys' (built-in)>
>>> sys.setdefaultencoding('gbk')
上面调用sys.setdefaultencoding()的时候先reload一下sys module,原因是python启动时缺省会import site.py, 而site.py会del sys.setdefaultencoding(),所以需要reload(sys)。具体可以看看site.py的源码。
接下来说说unicode()函数。其实unicode函数就是调用string的decode()方法,把string转成unicode,例如:
>>> a = '你好'
>>> b = unicode(a)
>>> b
u'/u4f60/u597d'
>>> c = a.decode('gbk')
>>> c
u'/u4f60/u597d'
>>> print b, c, b==c
你好 你好 True
下一部分说说codec
版权声明:本文为博主原创文章,未经博主允许不得转载。
string转unicode或者unicode转string,是很常见的操作。
string和unicode都有decode()和encode()方法。decode是string2unicode,encode自然就是unicode2string。看个例子(中文Windows2003下):
>>> a = '你好'
>>> a
'/xc4/xe3/xba/xc3'
>>> b = u'你好'
>>> c = a.decode('gbk') #gbk string to unicode
>>> b == c
True
>>> c
u'/u4f60/u597d'
>>> d = b.encode('gbk') #unicode to gbk string
>>> d == a
True
>>> d
'/xc4/xe3/xba/xc3'
>>> e = b.encode('utf-8') #unicode to utf-8 string
>>> e
'/xe4/xbd/xa0/xe5/xa5/xbd'
decode或者encode的时候,如果不指定编码方式,会按照缺省编码方式来处理。查看、设置缺省编码方式可以这样做:
>>> import sys
>>> sys.getdefaultencoding()
'ascii'
>>> reload(sys)
<module 'sys' (built-in)>
>>> sys.setdefaultencoding('gbk')
上面调用sys.setdefaultencoding()的时候先reload一下sys module,原因是python启动时缺省会import site.py, 而site.py会del sys.setdefaultencoding(),所以需要reload(sys)。具体可以看看site.py的源码。
接下来说说unicode()函数。其实unicode函数就是调用string的decode()方法,把string转成unicode,例如:
>>> a = '你好'
>>> b = unicode(a)
>>> b
u'/u4f60/u597d'
>>> c = a.decode('gbk')
>>> c
u'/u4f60/u597d'
>>> print b, c, b==c
你好 你好 True
下一部分说说codec
版权声明:本文为博主原创文章,未经博主允许不得转载。
相关文章推荐
- Python里的string 和 unicode (一)
- Python实现批量下载图片的方法
- Prototype pattern (Python recipe)
- 纯python实现的web: tornado性能测试以及实际使用解析
- python中的列表(list),字典(dict),字符串(str)的基本操作
- 十分钟搞定pandas
- Python正则表达式-2
- Python正则表达式-1
- Python第三方常用工具、库、框架等
- 创业公司都在使用的3款Python库
- python matplotlib绘图
- Win7下使用Sublime Text 3开发及调试Maya Mel和Python
- python中偏函数partial用法实例分析
- Python使用bs4获取58同城城市分类的方法
- Python实现批量修改文件名实例
- Python查询阿里巴巴关键字排名的方法
- python 中xrange 和range的用法区别 以及yield的用法
- 浅谈Python中的闭包
- Python中atexit模块的基本使用示例
- python登录豆瓣并发帖的方法