博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python字符串操作集锦之字符串编码解码函数
阅读量:4042 次
发布时间:2019-05-24

本文共 1140 字,大约阅读时间需要 3 分钟。

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 sysprint sys.getdefaultencoding()  #获取系统的编码

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

如果设置为ignore,则会忽略非法字符;
如果设置为replace,则会用?取代非法字符;
如果设置为xmlcharrefreplace,则使用XML的字符引用。

转载地址:http://wdmdi.baihongyu.com/

你可能感兴趣的文章
iOS网页专用,打开iSecret App
查看>>
排列组合公式/排列组合计算公式
查看>>
FaceBook 代码中重要备份&nbs…
查看>>
图片处理之 截取图片
查看>>
MPMoviePlayerController使用,以…
查看>>
iSecret 官方资料
查看>>
iSecret 1.1 正在审核中
查看>>
IOS开发的开源库
查看>>
IOS开发的开源库
查看>>
iSecret 1.1 正式发布 Congratulat…
查看>>
正则表达式语法
查看>>
SQL语句求总数、求平均数、降序排…
查看>>
计算字符串中各个字符出现的次数
查看>>
双层状态栏问题 跟踪状态栏Fr…
查看>>
CGRectInset、CGRectOffset…
查看>>
总结Objective-C中CGGeometry几何…
查看>>
CPM,CPC,CPL,CPS广告术语大全
查看>>
链表反转 58面试“留念”
查看>>
我的博客今天0岁200天了,我领取了…
查看>>
layoutSubviews 和 layoutIf…
查看>>