python疑问3:头痛的字符编码

发布时间:2019-08-05 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了python疑问3:头痛的字符编码脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

一提到字符编码,我身边的好多朋友都挥手,拜拜!字符编码就像一个烙印深深地印在心底,成为心病。
今天就来啃一啃这老骨头。
我们遇到过哪些编码?
ASCII,ANSI,GB2312,GBK,Unicode,UTF-8,MBCS,JIS,KS等等,为什么会出现这么多不同的编码,他们之间又有什么不同呢?
我们可以看看字符编码的历史,就能解决心中的疑惑了
图片描述

由图可见,计算机当时美国诞生,所以美国在设置字符编码的时候,并未考虑其它国家。所以当计算机在全球范围内进行覆盖时,各国纷纷制定属于本国的专属字符编码方案。由于各个方案互相并不兼容,所以便有Unicode一统天下。
知道了每个字符编码的由来,我们再看python中编码疑问就很好解释了。

  • python3将系统默认编码设置为utf-8
  • python3用str表示Unicode所有字符,bytes类型表示二进制数据

两者之间关系为:
图片描述

b = '好'
print(type(b)) //<class 'str'>

c = b.encode('utf-8')
print(type(c)) //<class 'bytes'>

c = b.encode('ASCII')
print(type(c)) //报错,ASCII不支持中文

d = c.decode('utf-8')
print(type(d)) //<class 'str'>

d = c.decode('gb2312')
print(type(d)) //报错,解码格式和编码格式不同

注意事项

  • 一般编码和解码格式保持一致,即使用utf-8编码后,也要用utf-8解码。否则可能会报错
  • 含有中文的字符编码时不能采用ASCII,因为它不支持中文

习惯:虽然python3去除了python2字符编码的很多诟病,但是一些习惯还是保持下去
譬如头文件添加编码注释

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

如果问python2中怎么办呢?
弃坑吧!

脚本宝典总结

以上是脚本宝典为你收集整理的python疑问3:头痛的字符编码全部内容,希望文章能够帮你解决python疑问3:头痛的字符编码所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。