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

gb18030=unicode.encode('gb18030')

print('gb18030编码:', gb18030) # gb18030编码: b'\xce\xd2\xca\xc7Python'

#从输出结果可以看出gb2312,gbk,gb18030返回的结果都是一样的, 只是3个编码集范围不同.

 

# Python3 中还存在字符字符串与二进制编码转换的问题:

# 二进制 -> 转换 -> 字符串 需要解码 decode

# 字符串 -> 转换 -> 二进制 需要编码 encode

#比如,读取网页的结果:

response = urllib.request.urlopen( 'http://www.baidu.com' )

html = response.read() # 此时html就是bytes类型的, 使用需要进行转换

# str to bytes

print(str.encode(s)) # 字符串转bytes 输出结果:b'\xe6\x88\x91\xe6\x98\xafPython'

# bytes to str

print(bytes.decode(html) )   # bytes转字符串

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值