首先,讲一下,什么是编码
编码是信息从一种形式或格式转换为另一种形式的过程也称为计算机编程语言的代码简称编码。用预先规定的方法将文字、数字或其它对象编成数码,或将信息、数据转换成规定的电脉冲信号。编码在电子计算机、电视、遥控和通讯等方面广泛使用。编码是信息从一种形式或格式转换为另一种形式的过程。解码,是编码的逆过程。
这是百度上的解释,我的理解是,根据事先约定好的规范,将其转换成某种固定的格式,使计算机能够理解,打个比方,就好比交通规则规定”红灯停,绿灯行“,我们看到红灯,就知道,应该停止等待,而计算机看到01000110,就知道这是代表”1“(打个比方,数字1的编码并不是01000110)
主要的几种编码方式
这里主要挑几种主要的简要叙述一下
1. ASCLL
我的理解就是通过八位二进制来表示字母和基本上的常用符号(具体的来源和定义自行百度,我这里就不做搬运了)
2. gb2312和gbk
因为ascll码只有八位二进制,除去西方世界已经占用的前七位,也就还剩下2**7种可能了,根本不够表示汉字,所以极具创造力的中国劳动人民,利用剩余的部分码制,重新创造了一套兼容ascall码的编码,就是gb2312,专门用于处理中文和中文字符,当时纳入的汉字只有两千多个左右,后来又对gb2312进行了扩充和改进,也就是后来的gbk编码
3. unicode
统一码,也叫万国码,国际统一标准,利用两个字节表示1个字符,为了解决各国之间编码混乱的问题提出来的,它兼容所有国家的编码
4. utf-8
针对unicode的可变长字符编码,因为unicode采用两个字节表示一位字符,utf-8作出改进,它采用一个字节存储英文字符,而采用三个字节存储中文等其他字符
python的字符编码
python2
python2中默认的是ascll码,所以,如果直接在python2中输入中文,会报SyntaxError: Non-ASCII character…..的错误,不过这个问题也很好解决,只需要在代码第一行添加以下代码即可:
# encoding:utf-8
python3
python3中的默认编码是utf-8,一般来说是可以正常表示中文的,你可以采用以下代码查看python3的默认编码:
import sys
print(sys.getdefaultencoding())