• 字符编码


    字符编码

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

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

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

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

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

      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格式的二进制

    人生如逆旅,我亦是行人.....
  • 相关阅读:
    bzoj4152-[AMPPZ2014]The_Captain
    bzoj3209-花神的数论题
    [模板] 数位dp
    [西安交大附中集训] 自积
    [模板] 后缀数组
    [模板] 哈希表
    [西安交大附中集训] d6 删边(cip)
    java 发布订阅
    Spring Boot使用@Async实现异步调用:自定义线程池
    上传文件到服务器或者直接输出到输出流
  • 原文地址:https://www.cnblogs.com/liusijun113/p/10009593.html
Copyright © 2020-2023  润新知