python3中字符编码转换
# Python3编码转换已经不像python2那样让⼈崩溃, 但是在使⽤过程中需要遵循⼀定规则
# 各种编码的互相转换, 都要先decode解码为unicode编码, 然后通过unicode再encode编码为想要的编码
s = '我是Python'
# unicode to gb2312
# unicode编码不需要decode()解码,直接encode()编码,如gb2312
gb2312 = s.encode('gb2312')
print('gb2312编码:',gb2312) # gb2312编码: b'\xce\xd2\xca\xc7Python'
# gb2312 to utf8
# gb2312编码需要先decode解码成unicode, decode()解码函数中传⼊的参数为当前字符的编码集,然后再encode编码成utf-8 utf8 = gb2312.decode('gb2312').encode('utf-8')
print('utf-8编码:',utf8) # utf-8编码: b'\xe6\x88\x91\xe6\x98\xafPython'
# utf8 to gbk
# 同样的,utf-8编码需要先decode解码为Unicode, 再encode编码换成gbk字符集
gbk = utf8.decode('utf-8').encode('gbk')
print("gbk编码:",gbk) # gbk编码: b'\xce\xd2\xca\xc7Python'
# utf8 to uicode
# 当转换成unicode时,直接decode解码就⾏, 并不需要就⾏encode()编码
unicode = gbk.decode('gbk')
print('unicode编码:', unicode) # unicode编码: 我是Python
# unicode to gb18030
de('gb18030')
print('gb18030编码:', gb18030) # gb18030编码: b'\xce\xd2\xca\xc7Python'
#从输出结果可以看出gb2312,gbk,gb18030返回的结果都是⼀样的, 只是3个编码集范围不同.
# Python3 中还存在字符字符串与⼆进制编码转换的问题:
# ⼆进制 -> 转换 -> 字符串 需要解码 decode
二进制编码转换# 字符串 -> 转换 -> ⼆进制 需要编码 encode
#⽐如,读取⽹页的结果:
response = quest.urlopen( 'www.baidu' )
html = ad() # 此时html就是bytes类型的, 使⽤需要进⾏转换
# str to bytes
de(s)) # 字符串转bytes 输出结果:b'\xe6\x88\x91\xe6\x98\xafPython'
# bytes to str
print(bytes.decode(html) )  # bytes转字符串

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。