unicode和多字节字符集的区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了unicode和多字节字符集的区别相关的知识,希望对你有一定的参考价值。

参考技术A 编码指不同国家的语言在计算机中的一种存储和解释规范 ANSI与ASCII n最初,Internet上只有一种字符集——ANSI的ASCII字符集(American Standard Code for Information Interchange, “美国信息交换标准码),它使用7 bits来表示一个字符,总共表示128个字符,后来IBM公司在此基础上进行了扩展,用8bit来表示一个字符,总共可以表示256个字符,充分利用了一个字节所能表达的最大信息 nANSI字符集:ASCII字符集,以及由此派生并兼容的字符集,如:GB2312,正式的名称为MBCS(Multi-Byte Chactacter System,多字节字符系统),通常也称为ANSI字符集。 UNICODE与UTF8,UTF16 n由于每种语言都制定了自己的字符集,导致最后存在的各种字符集实在太多,在国际交流中要经常转换字符集非常不便。因此,产生了Unicode字符集,它固定使用16 bits(两个字节)来表示一个字符,共可以表示65536个字符 n标准的Unicode称为UTF-16(UTF:UCS Transformation Format )。后来为了双字节的Unicode能够在现存的处理单字节的系统上正确传输,出现了UTF-8,使用类似MBCS的方式对Unicode进行编码。(Unicode字符集有多种编码形式) 例如“连通”两个字的Unicode标准编码UTF-16 (big endian)为:DE 8F 1A 90 而其UTF-8编码为:E8 BF 9E E9 80 9A n当一个软件打开一个文本时,它要做的第一件事是决定这个文本究竟是使用哪种字符集的哪种编码保存的。软件一般采用三种方式来决定文本的字符集和编码: 检测文件头标识,提示用户选择,根据一定的规则猜测 最标准的途径是检测文本最开头的几个字节,开头字节 Charset/encoding,

Unicode编码和utf-8编码的区别

字符集:是一堆字符组成的集合,用来指定字节或者字符串映射成二进制的规则

    (在计算机中存储的,无论是字节还是字符串都是以二进制模式存储的。)

1    Unicode编码的由来

因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理。最早的计算机在设计时采用8个比特(bit)作为一个字节(byte),所以,一个字节能表示的最大的整数就是255

由于计算机是美国人发明的,因此,最早只有127个字符被编码到计算机里,也就是大小写英文字母、数字和一些符号,这个编码表被称为ASCII编码,比如大写字母A的编码是65,小写字母z的编码是122。

 

2    UTF-8编码

新的问题又出现了:如果统一成Unicode编码,乱码问题从此消失了。但是,如果你写的文本基本上全部是英文的话,用Unicode编码比ASCII编码需要多一倍的存储空间,在存储和传输上就十分不划算。

所以,本着节约的精神,又出现了把Unicode编码转化为“可变长编码”的UTF-8编码。UTF-8编码把一个Unicode字符根据不同的数字大小编码成1-6个字节,常用的英文字母被编码成1个字节,汉字通常是3个字节,只有很生僻的字符才会被编码成4-6个字节。如果你要传输的文本包含大量英文字符,用UTF-8编码就能节省空间:

 从上面的表格还可以发现,UTF-8编码有一个额外的好处,就是ASCII编码实际上可以被看成是UTF-8编码的一部分,所以,大量只支持ASCII编码的历史遗留软件可以在UTF-8编码下继续工作。

 

浏览网页的时候,服务器会把动态生成的Unicode内容转换为UTF-8再传输到浏览器。所以你看到很多网页的源码上会有类似<meta charset=”UTF-8″ />的信息,表示该网页正是用的UTF-8编码。

以上是关于unicode和多字节字符集的区别的主要内容,如果未能解决你的问题,请参考以下文章

Unicode字符集 和多字节字符集 有啥关系啊

通过编写串口助手工具学习MFC过程——Unicode字符集的宽字符和多字节字符转换

SQL 中 unicode字符和非unicode字符的区别

UNICODE与ANSI的区别

UNICODE与ANSI的区别

浅谈ASCII码unicode编码UTF-8编码的区别