程序员技术干货

python3 编码问题详解

2017-09-26  本文已影响60人  LionelDong
  1. 计算机只能处理数字,如果需要处理文本信息,那么就需要设计一种编码方法来使用数字表示文本。计算机在设计时采用8bit=1byte表示一个字节。那么1byte能表示的最大数字是255(2的8次方)。每一个数字就可以表示一个字符。于是神奇的ASCII编码方案诞生了。
  2. 由于早期计算机是在美国诞生的,于是ASCII编码只能表示英文字母,数字,符号。为了能够表示本国文字,各国相继有了自己的编码方案。如中国的GB2312。随着国际化程度的加深,多语言文本大量出现。但是因不同的语言有不同的编码方案,多语言文本中会出现冲突,导致乱码。于是又出现了一个神奇的编码方案——Unicode
  3. Unicode编码方案将所有语言都统一到一套编码里,这样就方便了很多。Unicode通常使用两个字节表示一个字符,若遇到生僻字符就会使用四个字节。两个字节表示一个字符,同时常用字符在整个字符集中所占比例不是很大,多数字符都使用两个字节表示会很费内存的呀~ 于是,嘿嘿嘿(●ˇ∀ˇ●) 又一个神奇的东西诞生了,可变长的UTF-8编码。
  4. UTF-8编码是一种针对Unicode的可变长度字符编码,也是一种前缀码。它可以用来表示Unicode标准中的任何字符,且其编码中的第一个字节仍与ASCII兼容,这使得原来处理ASCII字符的软件无须或只需做少部分修改,即可继续使用。
  5. 有时候会看到这样一个选项以UTF-8无BOM格式编码那么这个神奇的BOM是什么呢它常被用来当作标示文件是以UTF-8UTF-16UTF-32编码的记号。python3的解释器会解决带不带BOM的问题~就不要我们担心了。在linux下最好还是使用无BOM的UTF-8编码格式。
  6. 关于BOM的知乎讨论可以看一下~BOM知乎讨论
上一篇下一篇

猜你喜欢

热点阅读