zoukankan      html  css  js  c++  java
  • 字符编码补充

    字符编码

    乱码:产生乱码的本质原因是存和取所采用的编码格式不一样

    编码种类:ascii unicode gbk gb2312 utf-8

    电脑组成:硬盘 ====》内存===》 一级缓存 二级缓存 CPU寄存器===》CPU

    cpu 交互的是用户能识别的数据,字符

    硬盘中最终存贮的数据:01的二进制数据(可以直接转化为电脑能识别的高低电平)

    什么是字符编码:

    将人识别的 字符转换成计算机能识别的01 高低电平,转换的规则就是字符编码

    编码表 也就是对应关系

    最早期的对应关系 ascii编码表:存放的是英文数字字符与机器二进制的对应关系

    例如;数字70对应ascii 表 指向的是字母F

    print(chr(70)) ------------------->>F

    print(ord('F')) --------------------->>70

    字节所占字节数

    1字节 = 8个二进制位 00000000----111111111 256个数字 -128 ~127

    00000000---1000000 拓展:原码 补码 反码

    ascii中一个字母或数字占据一个字节

    GBK:中文编码 最新GBK gb18030

    ​ 16个二进制位 15个0到15个1

    ​ 兼容ascii 一个字母或者数字占据一个字节

    ​ 2W多汉字,用两个字节进行存贮

    日文/韩文 shift_JIS / Euc-kr

    国际上交流:

    一条信息中,可能同时出现英文 中文 日文 韩文......将所有信息存贮且不乱码

    万国编码表:Unicode

    uincode 采用两个字节存放数据

    utf-8 Utf-16 utf-32 常用国际编码

    utf-8采用变长存贮:1字节存放数字与英文,3字节存放汉字

    utf-16采用定长存贮:均以2字节存放数字,英文,汉字(常用的,也就是部分的汉字,不是全部的汉字)

    内存中用utf-16存取数据,定长存取数据效率高,变长还需要计算之后才能存取

    cpu和硬盘中,采用utf-8存取数据,(utf-8传输更快)

    拓展:现在在实际的项目过程中很多公司都采取牺牲空间 提升效率的方法,因为硬件扩展比较容易,加内存条加存贮器都容易解决,而且成本不是很高, 但是要提高程序的运算效率,改进算法,就是比较麻烦的了。

    三种字符串


    ###原文本字符串数据
    s1='abc123你好'
    print(s1)

    ####二进制字符串数据:
    #数据传输是以字节为单位,要将原字符串转换为二进制字符串才能传输
    #编码
    res = s1.encode('utf-8')
    #解码
    s2 = res.decode('gbk')


    ####原义字符串数据
    s3 = r'你好 好的'
    print(s3)

    总结:

    字典:

    增删改查

    字典循环 dic.keys() dic.values() dic.items()

    字典嵌套 字典可以和列表交叉嵌套

    python

    !1554014084370](C:UsersDELLAppDataLocalTemp1554014084370.png)

    字符编码

    以后我们使用的文本文件统统采用utf-8编码

    ascii----->各国自己独有的编码(例如gbk)兼容ascii----------->unicode 万国编码 兼容前面的------->utf-8 utf-16

    python2默认采用ascii 编码表。

    python3默认采用utf-8

    再文件最上方可以通过 encoding: 编码名 来规定文件解码的编码表

    再python3以后的开发环境,所有的文件采用utf-8编码存贮,python3默认也采用utf-8读取文件,所以可以省略文件头

  • 相关阅读:
    cf1131f 构造+并查集
    多源最短路小结
    bzoj2200拓扑排序+最短路+联通块
    cf478d 线性dp好题
    cf919D 线性dp+拓扑排序
    hiho1460 rmq模板题
    最小标示法模板 poj1509
    JAVA动态代理机制分析guide
    java动态代理(JDK和cglib)
    AOP面向切面编程
  • 原文地址:https://www.cnblogs.com/1832921tongjieducn/p/10649704.html
Copyright © 2011-2022 走看看