菜鸟学Python第七天

字符编码

  • 字符编码:字符编码指的是字符转成/编码成数字(二进制)

    编码的过程一定要遵循一个标准,该标准称之为字符编码

    字符=======编码=========》数字

    字符《======解码========数字

  • 文本编辑器打开文本的三个步骤:

    1. 打开文本编辑器

    2. 文本编辑器将文本内容读入到计算机内存

    3. 文本编辑器将文本内容显示到显示屏上

 

 

  • ASCII码表:只能识别英文字符,用8bit对应一个字符

     

  • GBK码表:可以识别中文字符和英文字符,用8bit对应一个英文字符,用16 bit对应两个中文字符。

     

  • Unicode 表:内存中默认使用该编码:用2 bytes表示一个字符。

    优势:1.可以识别万国字符

    1. 与各种字符编码的二进制数字都有对应关系

    劣势:任何字符不管是英文还是中文都用2 bytes存储,降低了存储效率,浪费了储存空间

     

  • UTF-8(Unicode transformation format):用1bytes对应一个英文字符,3bytes表示一个中文字符。

结论:

  1. 编码与解码

    字符-------------> 编码(encoding)--------------> 数字

    字符<------------- 解码(decoding)<-------------- 数字

     

    unicode 二进制 -------------->编码--------------> utf-8二进制

    unicode 二进制<-------------- 编码<-------------- utf-8二进制

     

  2. 内存中默认固定使用Unicode编码,我们可以改变的是数据有内存刷到硬盘时采用的编码(应该采用utf-8)

    既然utf-8比Unicode精简,那为什么内存中不用utf-8进行中转?

    utf-8虽然包含了万国语言,但本质上跟ASCII、gbk一样不能不能对除Unicode编码的文件进行转换,所以为了避免以往用其他编码表编码的文件能够继续运行,所以目前还只能在内存中用Unicode进行解码,随着以后的编码都统一用utf-8,未来可能会有一天内存也可以用utf-8进行编码和解码过程。

  3. 解决乱码问题的核心

    1. 当存字符时用什么编码的,读取时就该以什么编码。

    2. 保证运行python程序的前两个阶段不乱码的解决方案:添加文件头(在文件首行添加# coding:文件当初存的时候的字符编码)

    python解释器默认的编码:

    • python3:默认utf-8

    • Python2:默认ASCII码

      注:Windows默认编码为gbk

  1. python3字符串类型在内存中存成Unicode格式的二进制

猜你喜欢

转载自www.cnblogs.com/liusijun113/p/10009593.html