字符集和字符编码

时间:2022-11-16 12:44:51

因为前段时间在mysql和程序中都遇到了字符集编码的问题,对于字符集和字符编码一直没有透彻的了解过。最近专门读了几篇文章进行了了解,记录一下感想和困惑。

1. 字符集和字符编码到底有什么区别?

character-set和character-code

字符集:字符的集合,这个集合限定支持哪些字符。

字符编码:对于该集合中每个字符以什么样的格式进行编码,对应的是一个数值。

2. UNICODE和UTF-8是什么关系?

我们常常会看到UNICODE字符集,UTF-8是一种编码方式

3.UNICODE字符集中的每个字符都有对应的码值, 为什么计算机内不将UNICODE的两字节码值进行直接存储,而又对UNICODE字符集采用各种编码方式?

为了节省空间进行压缩,如英文字符采用UTF-8编码只需要一个字节,但是如果采用UNICODE编码则需要两个字节。另外,为了方便传输(这个我也不清楚方便到什么地方了)。

4. GBK,GB2312,BIG5,UNICODE的区别和联系。

联系:GB2312,GBK,BIG5,UNICODE这四个都是字符集。

区别:GB2312,GBK,BIG5,UNICODE这四个字符集,集合内的字符不同。

GB2312,GBK,BIG5是向上兼容的。但是和UNICODE是不兼容的。

兼容的意思:就是说,GB2312里面有的字符,在GBK中都能找到,GBK只是扩展了字符集。

不兼容的意思:GB2312里面的字符虽然在UNCODE字符集中都能够找到,但是同一个字符的码值不一样。

需要注意的是:UTF-8编码只能对UNICODE进行编码,也就是说如果GB2312要转化为UTF-8编码,必须得先转化为UNICODE编码。

 

话说:我一直不清楚计算机里面到底存的是那些编码?UNICODE还是UTF-8?

我的理解是实体存的是UTF-8,GBK,GB2312既是一种字符集,同时也是编码方式。