美文网首页程序员
有关于UTF-8 & Unicode编码问题

有关于UTF-8 & Unicode编码问题

作者: Yard | 来源:发表于2016-07-25 12:41 被阅读165次

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

但是当引入中文或者其他语言的时候127的字符编码就不够用了,所以,中国制定了GB2312编码,用来把中文编进去。

你可以想得到的是,全世界有上百种语言,日本把日文编到Shift_JIS里,韩国把韩文编到Euc-kr里,各国有各国的标准,就会不可避免地出现冲突,结果就是,在多语言混合的文本中,显示出来会有乱码。

也正因为这些原因,Unicode应运而生。Unicode把所有语言都统一到一套编码里,这样就不会再有乱码问题了。

Unicode标准也在不断发展,但最常用的是用两个字节表示一个字符(如果要用到非常偏僻的字符,就需要4个字节)。现代操作系统和大多数编程语言都直接支持Unicode。

现在,捋一捋ASCII编码和Unicode编码的区别:ASCII编码是1个字节,而Unicode编码通常是2个字节。

那么问题又来了:如果统一成Unicode编码,虽然消除了乱码的问题,但是如果写的文本都是英文,就会造成存储空间的浪费,对于当时紧缺的内存空间,这是一件很消耗性能的事情。

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

小结:在计算机内存中,统一使用Unicode编码,当需要保存到硬盘或者需要传输的时候,就转换为UTF-8编码。

还有一个我的观点:UTF-8就是unicode一种压缩机制,通过一种最优二叉树的算法把unicode编码文件压缩到最小,而后通过UTF-8存储或者传输已达到存储最大化和传输效率最大化。

相关文章

  • 有关于UTF-8 & Unicode编码问题

    由于计算机是美国人发明的,因此,最早只有127个字母被编码到计算机里,也就是大小写英文字母、数字和一些符号,这个编...

  • python基础-13-史上最通俗易懂的编码讲解

    常用编码 ascii unicode utf-8 gbk 编码 ascii unicode utf-...

  • ASCII,Unicode,UTF-8,Base-64

    字符编码笔记:ASCII,Unicode和UTF-8字符编码笔记:ASCII、Unicode、UTF-8 和 Ba...

  • unicode

    gbk---解码--->unicode---编码--->utf-8 其它编码格式到unicode属于解码,反之属于编码

  • 对编码的学习

    unicode,ansi,utf-8,unicode big endian这些编码有什么区别。 很久很久以前,有一...

  • 文件、异常

    编码问题 '''GBK 汉字编码 cp936 汉字2字节 windows默认Unicode(utf-8) 国际通...

  • 编码

    编码 编码格式(ASCII编码,GB2312编码(简体中文),GBK,ANSI编码,unicode,utf-8编码...

  • 编码问题

    关于ASCII,GBK,Unicode,utf-8,base64等编码的问题,我就不重复造轮子了,看到一篇文章:字...

  • 关于编码二三事

    1.中文编码共有3种,unicode, utf-8, gb2312。虽然unicode和utf-8比较像,但是我们...

  • 搞定编码格式问题

    Unicode 于 utf-8 以下文章来自知乎回答 Unicode 是「字符集」UTF-8 是「编码规则」 其中...

网友评论

    本文标题:有关于UTF-8 & Unicode编码问题

    本文链接:https://www.haomeiwen.com/subject/nnvgjttx.html