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

    字符编码针对的是文字,只跟文本文件有关

    文本编辑器的输入输出是两个过程

      内存 >>> 硬盘

      硬盘 >>> 内存

    人在操作计算机的时候输入的是人类能看懂的字符,但计算只能识别二进制数据:

      输入的字符    >>>(字符编码表)>>>   二进制数字

    ASCII码表:

      用八位二进制表示一个字符 0000 0000 ;1111 1111

    GBK:

      用2Bytes表示一个中文字符,1Bytes表示一个英文字符 0000 0000 0000 0000;1111 1111 1111 1111 ,最多有65535个字符

    万国码 unicode

      统一用2Bytes表示所有字符

      1.浪费存储空间

      2.io次数增加,程序运行效率低

      3.当内存中的unicode编码格式数据存到硬盘的时候,会按照utf-8编码

      会将unicode的英文字符由原来的2Bytes变成1Bytes
      会将unicode中文字符由原来的2Bytes变成3Bytes

    ps:现在的计算机内存都是 unicode,硬盘都是utf-8

    (需要掌握的)
    unicode的两个特点
    1.用户在输入的时候,无论输什么字符都能够兼容万国字符
    2.其他国家编码的数据由硬盘读到内存的时候unicode与其他各个国家的编码都有对应关系

    (必须掌握的)
    数据由内存保存到硬盘
    1.内存中的unicode格式二进制数字 >>>>编码(encode)>>>>> utf-8格式的二进制数据

    硬盘中的数据由硬盘读到内存
    1.硬盘中的utf-8格式的二进制数据 >>>>>解码(decode)>>>>> 内存中unicode格式的二进制数据
    ps:不乱码:文本文件以什么编码的就以什么解码

    python2 将py文件读入解释器默认ASCII
      在用python2解释器开发的时候,中文前会加‘u’,表示用unicode
    python3 将文本文件读入解释器默认utf-8
    python3 中字符串默认就是unicode编码格式的二进制数


    重点(*****):
    x = '上'
    res1 = x.encode('gbk') # 将unicode编码成可以存储和传输的utf-8的二进制数据
    print(res1) # b'xe4xb8x8a'
    # bytes类型 字节串类型 你就把它当成二进制数据即可
    res2 = res1.decode('gbk') # 将硬盘中的utf-8格式的二进制数据解码成unicode格式的二进制数据
    print(res2)


     
  • 相关阅读:
    广域网详解
    无线AP和无线路由器区别
    TRUNK的作用功能.什么是TRUNK
    name after, name for, name as
    让你的情商爆棚吧!
    综合布线系统之7个子系统构成
    网桥和交换机的工作原理及区别
    边界网关协议BGP
    OSPF协议详解
    路由信息协议(RIP)的防环机制
  • 原文地址:https://www.cnblogs.com/waller/p/11139407.html
Copyright © 2011-2022 走看看