从字符编码的发展历史理解ANSI、GB2312、Unicode、UTF8和UTF16区别

        在编程学习的深入后,不可避免的会遇到ANSI、GB2312、UTF8的编码问题,如果不彻底了解他们的区别,都最终会造成一个问题--乱码!例如文件打开乱码,数据库乱码、网页乱码等等各种乱码,这里就通过字符编码发展历史的介绍来分清各种不同的编码。

一、ASCII码

        我们都知道计算机起源于美国,早期的计算机只是用于科学计算,但是在计算机迅速发展时,计算机被要求不仅仅能够进行数值计算,还要进行字符处理和表示。于是一套名为ASCII(American Standard Code for Information Interchange,美国信息互换标准代码)码的编码方式被创造而出,使用7位(bit)来表示一个字符,总共能够表示128种字符。

        这套编码包含了控制码(例如\n换行符等)、符号(?!等)、数字和26个英文字母包括其大小写。但是由于这是一套由美国人提出的美国字符编码所以并没有包含中文、韩文等等其他国家的语言,毕竟当时谁也没想到计算机会普及到全世界。

后来IBM对这套ASCII码进行了扩充,使用8位来表示一个字符,新增了128种字符,这也仅仅是对一些拉丁字母和特殊符号的扩充。

 

二、ANSI

        当计算机普及到全世界时,各个国家面临的首要问题就是要针对自己国家的语言制定一套自己国家的编码规范,我国就提出里一套针对中文的GB2312的编码方式,这套编码方式基于ASCII码(并非IBM的ASCII扩充版本),使用2个字节表示一个汉字,具体的方式是前127个字符不变。当第一个字节(高字节)大于160的时候,表示一个汉字的开始,再用这个字节组合第二个字节(低字节,范围也是160-255)共同表示一个汉字。在这套编码方式中,不仅把中文编码进去,还把一些数学符号、罗马希腊字母和日本假名等等都编码进去,并且还把ASCII中原有的26个英文字母和符号都编入,当然这些字母是以2个字节表示,为和ASCII中原有的字母区别表示,称前者为“全角字符”,后者为“半角字符”。

     

你可能感兴趣的:(字符编码,字符编码,unicode,ANSI,UTF16,UTF8)