理解字符集、字符编码、ASCII、Unicode、UTF-8

来源:互联网 发布:软件咨询服务的税目 编辑:程序博客网 时间:2024/04/30 06:14

欢迎分享。 转载请注明(地址:http://blog.csdn.net/mvplinchen888/article/details/41542037)。

 

开发人员和经常使用计算机的朋友们肯定会遇到ASCII、UTF-8、Unicode、GB2312这些词汇,相信很多人是一头雾水、似懂非懂。下面我以尽量以通俗易懂的方式谈谈我的理解。

 

“字符集”和“字符编码”

要弄明白这些名词,首先要理解“字符集”和“字符编码”的概念。

“字符集”是一种“集合”,“字符编码”是“一种“编码”,我们先来看看“集合”和“编码”指的是什么。

 

举个例子,彩虹有7种颜色,            。我们可以把这7种颜色作为一个集合,这个集合中有7个元素,每个元素为一种颜色。

这个时候问题来了,张三看到了,想告诉旁边的李四他看到了,那他怎么向李四表达呢?

于是,聪明的张三和李四将这些颜色分别起了名字,叫做“红、橙、黄、绿、青、蓝、紫”。这样,张三就可以跟李四说:“我看到了红色。”,然后李四就能明白,张三看到的颜色是

聪明的张三和李四又给这些颜色起了另外一套名字,叫做“red, orange, yellow, green, cyan, blue, purple”。这时张三跟李四说“我看到了red”,李四也能明白,张三看到的颜色是

 

现在,大家可能对“集合”和“编码”有了一定的理解。

“集合”指的是将同一种类型的元素作为一个整体。比如,我们可以把{              }称为一种“颜色集”,集合中的元素都是颜色。

而“编码”就是指这些元素在某种“记录方式”下得表示形式。比如“红、橙、黄、绿、青、蓝、紫” 是 {             } 这个集合在“声音”这种记录方式下的一种表示形式,而“red, orange, yellow, green, cyan, blue, purple”是在“声音”这种记录方式下得另外一种表示形式。

 

现在回到“字符集”和“字符编码”。字符集指的是:元素为“字符”的集合。字符编码指的是:在“计算机”这种记录方式下,字符的表示形式。

因为在计算机的世界中,只有‘0’和‘1’,没有‘A’、‘B’、‘C’、‘D’或‘春’、‘夏’,‘秋’,‘东’。所以‘A’在计算机中只能表示成比如‘01000001’这种形式。

 

ASCII、UTF-8、Unicode、GB2312

对“字符集”和“字符编码”有了一定的认识后,再来ASCII、UTF-8、Unicode、GB2312这些东西。

 

ASCII是一种字符集,收录了128个字符,包括英文字母,数字,一些符号,和一些控制字符。

因为ASCII只有一种编码方式,所以ASCII同时也是一种字符编码。

ASCII诞生时间很早,在计算机世界中是地位很高的“元老”,所有的计算机系统都支持ASCII。

 

然而,因为ASCII诞生时间早,所以他有一个很严重的缺点,就是字符太少了,只有英文和数字!没有中文!没有日文!没阿拉伯文!只有英文!。

然后,各路计算机大神们一起发明了另一套字符集,就是万能的Unicode。

Unicode可以收录大约43亿个字符!这样就可以把全世界所有语言的字符都收录进来了,甚至一些表情字符(如Emoji),甚至将来如果发现了火星文,都能收录进来。这可比ASCII那可怜的128个字符强多了,怎一个NB了得。

所以,Unicode是一种字符集。而Unicode有很多种编码方式,其中,UTF-8就是最流行,使用最广泛的一种编码方式。

 

那GB2312是什么呢?GB2312是中国大陆在80年代发布的一种针对汉字的字符集和编码。在中国大陆的Windows系统中全部支持GB2312。但是,在当今的互联网时代,全世界人民都在使用作为“世界标准”的Unicode和UTF-8。作为“中国大陆标准”的GB2312渐渐退出了历史舞台。

 

乱码

最后来说说“乱码”和的问题。

有时,我们会看到在别人那显示的好好的中文,在自己这里显示的却是乱码。原因只有一个,就是你的软件(比如word)的使用的解码方式和你当前打开的文件的编码方式不一致!

大家再仔细想想,我们有没有看到英文乱码的情况? 好像没有!没错! 为什么呢?因为Unicode或GB2312这两个字符集都包含了ASCII那128个字符!这128个字符的编码方式也与ASCIi是一致的!

 

相关推荐文章:

字符集和字符编码(Charset & Encoding)

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

 

0 0
原创粉丝点击