zoukankan      html  css  js  c++  java
  • ascii、unicode、utf-8、gbk 区别

    原文:https://blog.csdn.net/u010262331/article/details/46013905

    ASCII:
    遇上0×10, 终端就换行;

    遇上0×07, 终端就向人们嘟嘟叫;

    遇上0x1b, 打印机就打印反白的字,或者终端就用彩色显示字母。
    把这些0×20以下的字节状态称为“控制码”。把所有的空 格、标点符号、数字、大小写字母分别用连续的字节状态表示,一直编到了第127号,这样计算机就可以用不同字节来存储英语的文字了。
    大家看到这样,都感觉很好,于是大家都把这个方案叫做 ANSI的“Ascii”编码(American Standard Code for Information Interchange,美国信息互换标准代码)。当时世界上所有的计算机都用同样的ASCII方案来保存英文文字。

    GB2312 是对 ASCII 的中文扩展:
    把数学符号、罗马希腊的字母、日文的假名们都编进去了,连在 ASCII 里本来就有的数字、标点、字母都统统重新编了两个字节长的编码,这就是常说的“全角”字符。而原来在127号以下的那些就叫“半角”字符了。


    GBK:
    后来还是不够用,于是干脆不再要求低字节一定是127号之后的内码,只要第一个字节是大于127就固定表示这是一个汉字的开始,不管后面跟的是不是扩展字符集里的内容。结果扩展之后的编码方案被称为 GBK 标准,GBK包括了GB2312 的所有内容,同时又增加了近20000个新的汉字(包括繁体字)和符号。

    后来少数民族也要用电脑了,于是我们再扩展,又加了几千个新的少数民族的字,GBK扩成了 GB18030。

    各个国家都像中国这样搞出一套自己的编码标准,结果互相之间谁也不懂谁的编码,谁也不支持别人的编码。ISO (国际标谁化组织)的国际组织决定着手解决这个问题。
    从unicode开始,无论是半角的英文字母,还是全角的汉字,它们都是统一的“一个字符”!同时,也都是统一的“两个字节”,请注意“字符”和“字节”两个术语的不同:

    “字节”是一个8位的物理存贮单元,

    而“字符”则是一个文化相关的符号。


    在unicode中,一个字符就是两个字节。一个汉字算两个英文字符的时代已经快过去了。

    unicode同样也不完美,这里就有两个的问题,

    一个是,如何才能区别unicode和ascii?计算机怎么知道三个字节表示一个符号,而不是分别表示三个符号呢?

    第二个问题是,我们已经知道,英文字母只用一个字节表示就够了,如果unicode统一规定,每个符号用三个或四个字节表示,那么每个英文字母前都必然有二到三个字节是0,这对于存储空间来说是极大的浪费,文本文件的大小会因此大出二三倍,这是难以接受的。


    unicode在很长一段时间内无法推广,直到互联网的出现,为解决unicode如何在网络上传输的问题,于是面向传输的众多 UTF(UCS Transfer Format)标准出现了,顾名思义:
    UTF-8就是每次8个位传输数据,而UTF-16就是每次16个位。

    逆风的方向更适合飞翔,不怕千万人阻挡,只怕自己投降!
  • 相关阅读:
    第一周作业
    第八周作业
    第七周作业
    第五周作业
    第四周作业
    第三周作业
    第二周作业(markdown版本)
    第一周作业
    第六次作业
    第五周作业
  • 原文地址:https://www.cnblogs.com/jackzz/p/9086145.html
Copyright © 2011-2022 走看看