ASCII,ANSI,Unicode,UTF-8,BOM,UCS,GB2312,GBK,GB18030,BIG5,Code Page… Blabla…
对于以上概念,你是否都理解了呢?下面,带着大家彻底搞懂字符集和字符编码的相关知识。我是读了别人的posts,然后cook出来,整理思路,所以需要大家边读边仔细阅读相应的post哦~
入门篇
首先,简单了解一下。
这篇文章,以类似《明朝那些事儿》的文笔,向大家介绍了”编码“的简史。
阮一峰的博客,重点描述了ASCII和Unicode,并强调“UTF-8是Unicode的实现方式之一”,Little endian和Big endian的典故也说到了。跟上篇文章一样,适合入门。
初级篇
入门之后,需要搞清楚究竟“字符集”和“字符编码”是什么东东。
这篇文章,给出了“字符集”和“字符编码”的“定义”,并对ANSI编码有了比较合理的解释(使用2个字节来代表一个字符的各种汉字延伸编码方式,称为ANSI编码。 在简体中文系统下,ANSI编码代表GB2312编码,在日文操作系统下,ANSI编码代表JIS编码。 )这里也提到了BOM的概念,在“编程语言与编码”那里描述了编程语言对于内部字符串是如何进行编码的。
中级篇
在基本了解了“字符集”和“字符编码”是什么东东后,让我们再仔细看看主流的“字符集和编码”。
本文也是按照“字符编码的历程”来展开,ASCII,ISO8859-1,GB2312,GBK,GB18030,BIG5,UCS,Unicode都说到了。而在编码方面,重点说了UTF-8,UTF-16,UTF-32,UTF-7。此外,提到了MIME(多用途网际邮件扩充协议),是现在邮件编码方式的主流,其中定义了两种编码方法Base64和QP(Quote-Pritable)。
高级篇
下面,更加细致地了解下“编码”是如何存储的,以及分析下优缺点。
本文知识点比较系统,在看了以上的文章后,可以“系统”地整理下思路了。本文在描述了“ASCII字符集&编码”,“GBXXXX字符集&编码”以及“BIG5字符集&编码”后,提出了“伟大的创想Unicode”。之后,又说到了“互联网传输”的编码问题,Accept-Charset/Accept-Encoding/Accept-Language/Content-Type/Content-Encoding/Content-Language。
拾遗篇
了解“字符集”和“字符编码”的主线了,可能还对一些常见的概念疑惑。下面的链接就一些概念进行了简明的解释。
这里是想重点了解“Code Page”的,跟操作系统的实现有关。
Code page is another term for character encoding. It consists of a table of values that describes the character set for a particular language. The term code page originated from IBM’s EBCDIC-based mainframe systems,[1] but many vendors use this term including Microsoft, SAP,[2] and Oracle Corporation.[3] Vendors often allocate their own code page number to a character encoding, even if it is better known by another name (for example UTF-8 character encoding has code page numbers 1208 at IBM, 65001 at Microsoft, 4110 at SAP).
我国“技术专家”的智慧结晶!看看汉字是怎么被编码的!~
刚学输入法的时候,就一直被“全角”和“半角”折磨着,现在终于搞明白了!
总结篇
输入,编码,显示,存储,读取,解码,输出。
看来,不管什么东西,还是要从“操作系统”的层面去认识!