zoukankan      html  css  js  c++  java
  • 1. 编码方式

    一、

    1.unicode只是一种编码方式。

     ASCII码:只使用了7个比特位,127个字符   ——————> 美国——占 1 个字节

     扩展ASCII码:使用了8个比特位,256个字符  ——————>拉丁——占 1 个字节

     中文扩展ASCII码(GB2312):把拉丁的给霸占了,根据2个字节分别使用情况变化,几千个字符————>中国 —— 占 2 个字节

     中文扩展ASCII码(GBK):根据第一个字节的使用情况变化,两万多个字符  —————>  中国 --- 占 1 个字节

     Unicode(万国码):六七万个字符 ——— 全世界 ---- 都是 2 个字节,包括美国佬的英文。

     UTF8(美国佬伤不起,在万国码基础上改进成能伸能缩的编码方式):

      英文1个字节,非英文考虑两个或三个,中国变成3个字节了!坑!

    2.编码与解码。

    我们向软件输入文字并保存的过程(编码过程):

    其实是软件通过操作系统调用cpu将你的明文字符读到内存,在内存里CPU将明文解码(decode)unicode编码方式的二进制,所以此时内存里存储的都是unicode(针对目前操作的文件而言),只有在传输或者向磁盘里保存数据时,cpu将内存里的unicode编码方式的二进制编码(encode)成utf8编码方式(也可能是其他编码方式)的二进制数,然后写到硬盘上(因为unicode占容量大)。

    文件存的过程:unicode编码将明文——>unicode形式的二进制——>utf8形式的二进制——>磁盘

    文件读的过程:

    utf8(或者其他编码方式)它不能直接将二进制转化成明文,所以:

    utf8二进制——>unicode二进制(在内存里进行)——>明文

    3.按什么编码方式编就用什么编码方式解。

      所以一般都会开头声明用什么方式解码:例如 #coding:utf8(或者其他方式)。

    二、

      注意点:1 unicode,utf8,gbk都是编码规则。

          2 为什么内存存储的是unicode。
          3 程序执行前和执行后两个状态。

  • 相关阅读:
    TimeSpan的操作
    List<T>的排序和筛选
    编程中的一些概念
    SVN返回版本
    语音播报
    优化编译器的局限性
    Inline Functions 与它的形式参数和局部变量
    函数的效能 & 指向 Member Functions 的指针与其效能
    虚拟继承下 Virtual Function 的语意
    多重继承下 Virtual Function 的语意
  • 原文地址:https://www.cnblogs.com/mrpengfei/p/6659588.html
Copyright © 2011-2022 走看看