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

    字符编码

    总所周知计算机中只有0和1,人类文字众多,怎样把二进制对应人类文字储存起来呢?于是就有了一套规约来对应一串010101的数和文字,这个规约是人为定的,就有了各种不大相同的规定,就有了不同的字符编码。由于计算机是美国发明的,所以首先有了叫ASCII的编码。

    ASCII

      ASCII一开始是七个二进制数,即0000 0000,他能代表28=256个数。一开始,26个字母大小写和一些符号什么的总共占了127个,就用一个0开头的8位的二进制数代表一个符号或字母。如字母a的ASCII码为‘0100 0001’

      后来啊,就感觉不够用了,因为还有一些符号没法表示,然后就又将1开头的那128个用上了。ASCII码已规定并使用很多很多年。

     ASCII码字符对照表链接:

    http://www.51hei.com/mcu/4342.html

    GB2312

      再后来啊。。。呵,中国人开始用电脑了,电脑怎样让电脑显示中文字呢?还得类似的制定规约,这个规约叫GB2312

      GB2312(1980年)一共收录了7445个字符,包括6763个汉字和682个其它符号。汉字区的内码范围高字节从B0-F7,低字节从A1-FE,占用的码位是72*94=6768。其中有5个空位是D7FA-D7FE。

      (B0就是1011 0000的16进制表示,一个16进制表示一个4位2进制数,24=16嘛,这样看着相对舒服简单)

      可是中国文字博大精深,最小的那本新华字典还一万多字呢,根本不够。于是,就有了GBK

    GBK

      1995年的汉字扩展规范GBK1.0收录了21886个符号,它分为汉字区和图形符号区。汉字区包括21003个字符。

      两万多个字符显然还是不够,但其实足够包括中国人常用的汉字。

      后来2000年的 GB18030是取代GBK1.0的正式国家标准。该标准收录了27484个汉字,同时还收录了藏文、蒙文、维吾尔文等主要的少数民族文字。

      现在的PC平台必须支持GB18030,对嵌入式产品暂不作要求。所以手机、MP3一般只支持GB2312。(字库太大不利于小产品成本控制,那些百年一遇的生僻字也没有必要在MP3里放着占地方)

      但是,世界上又不止有中文。所以有了一套对全世界字符的规定:Unicode。

    Unicode

      Unicode又叫 统一码、万国码、单一码,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,规定虽有的字符和符号最少由 16 位来表示(2个字节),即:2 **16 = 65536。

    UTF-8

      UTF-8,是对Unicode编码的压缩和优化,他不再使用最少使用2个字节,而是将所有的字符和符号进行分类:ascii码中的内容用1个字节保存、欧洲的字符用2个字节保存,东亚的字符用3个字节保存...

    PS:ASCII、GB3212、GBK、Unicode编码是目前经常用到的。在次可见计算机领域前辈们做出的辛勤努力,做出如此成就可谓壮观,实属不易。

  • 相关阅读:
    java 新特性学习笔记
    Can't zip RDDs with unequal numbers of partitions
    编写自己的代码库(javascript常用实例的实现与封装)
    Python高级笔记(一) -- GIL (全局解释器锁)
    CMake快速入门
    Cmake出现CMake Error: Could not find CMAKE_ROOT !!!
    Python复习笔记(十一)TCP/IP协议
    用vim打开.py和.sh文件自动添加头
    如何实现Python调用C代码--python与C之间如何通信(swig)
    dpkg用管道批量删除deb
  • 原文地址:https://www.cnblogs.com/caijingyue/p/8331724.html
Copyright © 2011-2022 走看看