码迷,mamicode.com
首页 > 编程语言 > 详细

python学习:字符编码与转码

时间:2019-12-26 19:20:50      阅读:69      评论:0      收藏:0      [点我收藏+]

标签:gb2312   byte   你好   报错   print   decode   默认   gbk   code   

在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‘\xc4\xe3\xba\xc3‘
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‘\xe4\xbd\xa0\xe5\xa5\xbd‘
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\xe4\xbd\xa0\xe5\xa5\xbd
b\xc4\xe3\xba\xc3
---------utf-8 --> gbk---------
b\xc4\xe3\xba\xc3
你好
---------gbk --> utf-8---------
b\xe4\xbd\xa0\xe5\xa5\xbd
你好
---------gbk --> gb2312---------
b\xc4\xe3\xba\xc3
你好
---------gb2312 --> gbk---------
b\xc4\xe3\xba\xc3
你好
---------utf-8 --> gb2312---------
你好

python学习:字符编码与转码

标签:gb2312   byte   你好   报错   print   decode   默认   gbk   code   

原文地址:https://www.cnblogs.com/Ryan-Fei/p/12103668.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!