字符集,字符编码,Unicode

      作为一个程序开发人员搞清楚字符集,字符编码,Unicode等关键词的意义是非常重要的,这样我们基本上也就能搞明白遇到的编码问题了。

      接下来,我们就来简单了解下字符集,字符编码,Unicode的相关知识:

      基本概念

      字符[character]

      字符代表了字母表中的字符,标点符号和其他的一些符号。在计算机中,文本是由字符组成的。

      字符集合[character set]

      由一套用于特定用途的字符组成,例如支持西欧语言的字符集合,支持中文的字符集合。字符集合只定义了符号和他们的语意,其实跟计算机没有直接关系。

      字符编码[character encoding]

      是一套规则,定义了在计算机内存中如何表示字符,是字符集中的每个字符与计算机内存中字节之间的转换关系,也可以认为是把字符数字化,规定每个“字符”分别用一个字节还是多个字节存储,用哪些字节来存储。例如ASCII编码[你没看错,它既是一种字符集合,也是一种字符编码],定义了英文字母和符号在计算机中的表示方式,是用一个字节来表示。Unicode字符集合,有好几种字符编码方式,例如变长度编码的UTF8,UTF16等。中文字符集也有很多字符编码,例如上文提到的GB2312编码,GBK编码等。

      什么是UTF8

      Unicode/UCS只是字符集合,虽然为每个字符分配了一个唯一的整数值,但具体怎么用字节来表示每个字符,是由字符编码决定的。Unicode的字符编码方式有UTF-8, UTF-16, UTF-32。由于UTF-16和UTF-32编码中包含”\0”,或者”/”这样对于文件名和其他C语言库函数来说具有特殊意义的字符,所以不适合在Unix下用来做文件名称,文本文件和环境变量的Unicode编码。UTF-8没有这样的问题,它有很多优点:可以向前兼容ASCII码,是变长的编码,由于编码没有状态,所以很容易重新同步,在传输过程中丢失了一些字节后,具有鲁棒性。

扫描二维码关注公众号,回复: 2650162 查看本文章

有关更多精彩内容请参考:https://www.cnblogs.com/Jack47/p/unicode-utf8-character_set-encoding.html

猜你喜欢

转载自blog.csdn.net/dingpf1209/article/details/80333316