python学习:字符编码与转码
Posted ryan-fei
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python学习:字符编码与转码相关的知识,希望对你有一定的参考价值。
在Python3中必须先弄清楚的三个问题:
1、Python3中默认是Unicode编码。
2、gbk --> utf-8、utf-8 --> gbk都要通过Unicode“中转”一下。
3、在Python3中,encode后不仅转了编码,还把结果转成了bytes类型。如果要显示中文,再decode一下就可以了。
import sys print("Defaultencoding :", sys.getdefaultencoding()) s = ‘你好‘ # s是unicode # 转为UTF-8编码 print(s.encode(‘UTF-8‘)) # 转为GBK编码 print(s.encode(‘GBK‘)) # 转为ASCII编码(报错为什么?因为ASCII码表中没有‘你好’这个字符集~~) # print(s.encode(‘ASCII‘)) print("---------utf-8 --> gbk---------") # utf-8 --> gbk s = ‘你好‘ # s是unicode # 可以直接encode转,因为s就是unicode,不需要再转成uincode s_gbk = s.encode(‘gbk‘) # 此时已经转成了gbk,结果是一个bytes类型:b‘xc4xe3xbaxc3‘ print(s_gbk) print(s_gbk.decode(‘gbk‘)) #为了显示中文,才decode print("---------gbk --> utf-8---------") # gbk --> utf-8 s = ‘你好‘ # s是unicode s_gbk = s.encode(‘gbk‘) # 先转换成gbk,再gbk --> utf-8 # 先decode解码,告诉decode原来是什么编码,然后再encode指定要转换成的目标编码 s_utf8 = s_gbk.decode(‘gbk‘).encode(‘utf-8‘) # 此时已经转成了utf-8,结果是一个bytes类型:b‘xe4xbdxa0xe5xa5xbd‘ print(s_utf8) print(s_utf8.decode()) #为了显示中文,才decode print("---------gbk --> gb2312---------") # gbk --> gb2312 s = ‘你好‘ # s是unicode s_gbk = s.encode(‘gbk‘) # 先转换成gbk,再gbk --> gb2312 ,模拟需要 s_gb2312 = s_gbk.decode(‘gbk‘).encode(‘utf-8‘).decode(‘utf-8‘).encode(‘gb2312‘) print(s_gb2312) print(s_gb2312.decode(‘gb2312‘)) print("---------gb2312 --> gbk---------") # gb2312 --> gbk s = ‘你好‘ # s是unicode s_gb2312 = s.encode(‘gb2312‘) # 先转换成gbk,再gb2312 --> gbk,模拟需要 s_gbk = s_gb2312.decode(‘gb2312‘).encode(‘utf-8‘).decode(‘utf-8‘).encode(‘gbk‘) print(s_gbk) print(s_gbk.decode(‘gbk‘)) print("---------utf-8 --> gb2312---------") # utf-8 --> gb2312 s = ‘你好‘ # s是unicode s_gb2312 = s.encode(‘gb2312‘) print(s_gb2312.decode(‘gb2312‘)) 运行结果: Defaultencoding : utf-8 b‘xe4xbdxa0xe5xa5xbd‘ b‘xc4xe3xbaxc3‘ ---------utf-8 --> gbk--------- b‘xc4xe3xbaxc3‘ 你好 ---------gbk --> utf-8--------- b‘xe4xbdxa0xe5xa5xbd‘ 你好 ---------gbk --> gb2312--------- b‘xc4xe3xbaxc3‘ 你好 ---------gb2312 --> gbk--------- b‘xc4xe3xbaxc3‘ 你好 ---------utf-8 --> gb2312--------- 你好
以上是关于python学习:字符编码与转码的主要内容,如果未能解决你的问题,请参考以下文章