字符编码

1 常用字符编码

  • ASCII: 只认识英文字符,1个字节表示 最多表示256个字符

  • GBK: 支持英文字符和中文字符,2字节表示中文字符,1字符表示英文字符

  • unicode: 支持万国字符,2个字节表示 生僻字需要用4个字节

    历史使命

    • 1、兼容万国字符
    • 2、兼容老的字符编码表
  • UTF-8: 在unicode的基础上进行了优化,长度是可变的,英文字母1个字节表示,汉字通常是3个字节,生僻字4-6个字符

2 字符从硬盘到展示的编码过程

1
2
3
4
                          内存                     硬盘
万国字符-----------》unicode格式的二进制数--------》utf-8格式的二进制数
中文、英文字符- ----》unicode格式的二进制数--------》gbk格式的二进制数
日文、英文字符- ----》unicode格式的二进制数--------》shift

3 保证不乱码的方法

  • 1、保证存不乱码
    存内存不用管,因为内存固定使用unicode格式
    存入硬盘的编码格式统一改改为utf-8

  • 2、保证取不乱码
    编码与解码用的是同一张字符编码表

    1
    2
    python3解释器默认读文件的编码格式是utf-8
    python2解释器默认读文件的编码格式是ascii