Python 字符编码转换秘诀

来源(PythonTab:Python中文开发者社区门户)

From: http://www.pythontab.com/html/2014/pythonjichu_0320/719.html

Python 字符编码转换秘诀

2014-03-20 09:32:24 来源:

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

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之间的转换

比如:

>>> t='长城'

>>> t

'\xb3\xa4\xb3\xc7'

>>> t.decode('gb2312').encode('utf-8')

'\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文件中指定,比如

import sys

sys.setdefaultencoding('utf-8')

如对本文内容有疑问,或想进一步交流学习,欢迎通过以下方式:

1. Python论坛

2. pythontab技术互助群 群① 群② 群满,剩余名额有限,需要验证加群,但是高手众多。验证码获取地址:群验证码

群③:318130924 开放加群

3. 关注PythonTab微信,获取精彩资讯教程,公众号:Pythontab中文网

版权声明:本站文章除非注明,均为原创内容,如需转载请务必注明出处,违者本站保留追究其法律责任之权利。

Link: http://www.asm32.net/article_details.aspx?id=1864


浏览次数 369 发布时间 2014-05-09 03:40:17 从属分类 Python 【评论】【 】【打印】【关闭
 
| www.asm32.net | 2006版 | 资料中心 | linux | asm/asm32 | C/C++ | VC++ | java | Python | 书签 | ASP.Net书签 | 京ICP备09029108号-1