您的位置:首页 > 编程语言 > Python开发

Python字符串操作集锦之字符串编码解码函数

2015-08-08 08:45 716 查看
15、字符串的编码和解码的函数

15.1 str.encode([encoding,[errors]]):字符串编码

将Unicode编码转换成其他编码的字符串,如str2.encode(‘gbk2312’),表示将Unicode编码的字符串str2转换成gbk2312的编码。

encoding可以有多种值,比如gb2312 、gbk、 gb18030、big5、base64等。

errors默认值为”strict”,意思是UnicodeError。可能的值还有’ignore’, ‘replace’, ‘xmlcharrefreplace’, ‘backslashreplace’ 和所有的通过codecs.register_error注册的值。这一部分内容涉及codecs模块。

>>> 'abd'.encode('base64')
'YWJk\n'


15.2 str.decode([encoding,[errors]]):字符串解码

将其他编码的字符串解码成Unicode编码的字符串,如str1.decode(‘gbk’),表示将gbk编码的字符串str1解码成Unicode编码。

>>> 'YWJk\n'.decode('base64')
'abd'


字符串在Python2.x版本内部是以ASCII编码表示的,Python3.x默认是unicode编码。因此,有时候会遇到编码转换的问题,通常是以unicode作为中间编码,即先将其他编码的字符串解码(decode)成Unicode,再从Unicode编码(encode)成另一种编码。

因此在转码时,一定要弄明白字符串str是什么编码,然后decode成Unicode,然后再encode成其他编码。代码中字符串的默认编码与代码文件本身的编码一致。

如果字符串是这样定义的:str1 = u’abcd’

则该字符串的编码就被指定成为Unicode了,此时如果再对其解码的话,就会出错。因此,这种情况下,只需要直接使用encode方法进行编码即可。

通常在编码前需要对字符串的是否是Unicode编码进行判断:

isinstance(str1, unicode) #判断字符串是否是unicode编码

有时候我们也需要查看一下系统的编码:

import sys
print sys.getdefaultencoding()  #获取系统的编码


编码和解码时,可以用第二个参数控制错误处理的策略,默认的参数就是strict,代表遇到非法字符时抛出异常;

如果设置为ignore,则会忽略非法字符;

如果设置为replace,则会用?取代非法字符;

如果设置为xmlcharrefreplace,则使用XML的字符引用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: