python进阶100集(7)深入分析字符串乱码问题
字符串乱码问题一直是初学者比较头疼的事情,在之前的python基础专辑里面已经简单介绍过了,今天我们来深入分析一下python字符串乱码问题的原因,同样适用于其他编程语言!
首先了解以下几种编码:
ASCII:在计算机内部,所有信息最终都表示为一个二进制的字符串。每一个二进制位(bit)有0和1两种状态,因此8个二进制位可以组合出256种状态,这被称为字节(byte)。ASCII码一共规定了128个字符的编码,比如空格“SPACE”是32(二进制00100000),大写的字母A是65(二进制01000001)。这128个符号(包括32个不能打印出来的控制符号),只占用了一个字节的后面7位,最前面的1位统一规定为0。它的范围基本只有英文字母、数字和一些特殊符号 。
GB2312:GB2312是对ASCII码的中文扩展,在ASCII码中添加了中文部分。
GBK:GBK编码是对GB2312的扩展,同时兼容简体中文和繁体中文,GB2312是对ASCII码的中文扩展。GBK全称《汉字内码扩展规范》,使用双字节码,是用来编码汉字的。对于英文字母还是按照ASCII字符集。对于汉字使用两个字节。
Unicode:又称万国码,将世界上所有的语言和符号都纳入其中,每一种符号都给予独一无二的编码,防止乱码。
UTF-8:变长码,UTF-8是在互联网中使用最多的对Unicode的实现方式。UTF-8最大的一个特点,就是它是一种变长的编码方式。它可以使用1~4个字节表示一个符号,根据不同的符号而变化字节长度。比如:对于英文或数字还是按照ASCII字符集使用1个字节,对于汉字使用三个字节