python字符编码

最近一直被字符编码所困扰,本想找资料解决这个疑惑,奈何网上众说纷纭😥,所以按照个人倾向做了一些结论性的总结(有点随意):

字节、字节流、二进制

ASCII、GBK、Unicode、UTF-8

python2、str、Unicode、字符串

python3、 str、Unicode、字符串

encode()、decode()、Unicode

一、结论:

一、ASCII、GBK同时表示字符集和编码格式。ASCII使用1个字节存储一个字符,字节首位是0;GBK使用2个字节存储一个中文字符,第一个字节首位是1,GBK兼容了ASCII字符集。

二、Unicode是字符集,UTF-8是编码格式(是Unicode字符集的编码实现)。Unicode的编码格式可分为utf-32 (4个字节存储一个字符),utf-16(2个字节存储一个字符),utf-8(1-4个字节存储一个字符,中文字符占用3个字节)。

三、python 2中默认字符集与编码格式是 ASCII。

四、python 3中默认字符集是 Unicode,默认编码格式是UTF-8。

五、编码:把字符按照指定编码格式编码成字节;解码:把字节按照指定编码格式解码成字符。

六、字节解码时使用的格式必须和字符编码时使用的编码格式一致,否则会出现乱码。

二、py3中的编码和转码的过程

注:Unicode是中间字符集,任何字符编码地转换都会先解码成Unicode,再按照指定的编码格式编码。


#无需声明字符编码,当然你声明也不会报错
s = '你好'
s_to_gbk = s.encode("gbk")  # 字符串s已经是unicode字符,无需解码
print("------s_to_gbk------")
print(s_to_gbk)
gbk_to_utf8 = s_to_gbk.decode("gbk").encode("utf-8")  #需要先使用gbk格式解码成unicode字符,再使用utf-8格式编码
print("------gbk_to_utf8------")
print(gbk_to_utf8)
utf8_decode = gbk_to_utf8.decode("utf-8")  #使用utf-8格式解码成unicode字符
print("------utf8_decode------")
print(utf8_decode)

------s_to_gbk------
b'\xc4\xe3\xba\xc3'
------gbk_to_utf8------
b'\xe4\xbd\xa0\xe5\xa5\xbd'
------utf8_decode------
你好

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值