字符集和编码
相信大家一定碰到过,打开某个网页,却显示一堆像乱码,如"б?ЯАзЪСЯ"、"?????????"?
还记得HTTP中的Accept-Charset、Accept-Encoding、Accept-Language、Content-Encoding、Content-Language等消息头字段?
这些就是接下来我们要探讨的。
1.基础知识
计算机中储存的信息都是用二进制数表示的; 而我们在屏幕上看到的英文、汉字等字符是二进制数转换之后的结果。 通俗的说,按照何种规则将字符存储在计算机中,如'a'用什么表示,称为"编码"; 反之,将存储在计算机中的二进制数解析显示出来,称为"解码"。 在解码过程中,如果使用了错误的解码规则,则导致'a'解析成'b'或者乱码。 字符集(Charset):是一个系统支持的所有抽象字符的集合。 字符是各种文字和符号的总称,包括各国家文字、标点符号、图形符号、数字等。 字符编码(Character Encoding):是一套法则,使用该法则能够对自然语言的字符的一个集合(如字母表或音节表),与其他东西的一个集合(如号码或电脉冲)进行配对。 即在符号集合与数字系统之间建立对应关系,它是信息处理的一项基本技术。 通常人们用符号集合(一般情况下就是文字)来表达信息。 而以计算机为基础的信息处理系统则是利用元件(硬件)不同状态的组合来存储和处理信息的。 元件不同状态的组合能代表数字系统的数字,因此字符编码就是将符号转换为计算机可以接受的数字系统的数,称为数字代码。
2.常用字符集和字符编码
常见字符集名称:ASCII字符集、GB2312字符集、BIG5字符集、GB18030字符集、Unicode字符集等。 计算机要准确的处理各种字符集文字,需要进行字符编码,以便计算机能够识别和存储各种文字。 ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统。 ASCII字符集:主要包括控制字符(回车键、退格、换行键等);可显示字符(英文大小写字符、阿拉伯数字和西文符号) ASCII一开始使用7位(bit)表示一个字符,共123字符,但是不够用,扩展用8位,一共256字符 ASCII的最大缺点是只能显示26个基本拉丁字母、阿拉伯数目字和英式标点符号, 因此只能用于显示现代美国英语(而且在处理英语当中的外来词如na?ve、café、élite等等时,所有重音符号都不得不去掉,即使这样做会违反拼写规则)。 而EASCII虽然解决了部份西欧语言的显示问题,但对更多其他语言依然无能为力。 因此现在的苹果电脑已经抛弃ASCII而转用Unicode。
3.GBXXXX字符集&编码
天朝专家把那些127号之后的奇异符号们(即EASCII)取消掉, 规定: 一个小于127的字符的意义与原来相同,但两个大于127的字符连在一起时,就表示一个汉字, 前面的一个字节(他称之为高字节)从0xA1用到 0xF7,后面一个字节(低字节)从0xA1到0xFE,这样我们就可以组合出大约7000多个简体汉字了。 在这些编码里,还把数学符号、罗马希腊的 字母、日文的假名们都编进去了,连在ASCII里本来就有的数字、标点、字母都统统重新编了两个字节长的编码, 这就是常说的"全角"字符,而原来在127号以下的那些就叫"半角"字符了。 //也就是说,搜狗上的"全角"是采用的GB字符集,"半角"是ASCII的字符集
上述编码规则就是GB2312。 GB2312或GB2312-80是中国国家标准简体中文字符集, 全称《信息交换用汉字编码字符集·基本集》,又称GB0, 由中国国家标准总局发布,1981年5月1日实施。GB2312编码通行于中国大陆
BIG5字符集&编码
Big5,又称为大五码或五大码,
是使用繁体中文(正体中文)社区中最常用的电脑汉字字符集标准,共收录13,060个汉字。
4.Unicode编码:
由于计算机在世界各国兴起之后, 各国有自己的一套编码语言,中国有类似GB-之类的,但是当各个国度的语言汇编到一块的时候,就会出现不兼容,乱码之类的。 为了解决这个问题,一个伟大的创想产生了——Unicode。Unicode编码系统(ta是一个字符集合,收录了多种符号集合)为表达任意语言的任意字符而设计。 它使用4字节的数字来表达每个字母、符号,或者表意文字(ideograph)。每个数字代表唯一的至少在某种语言中使用的符号。 在计算机科学领域中,Unicode(统一码、万国码、单一码、标准万国码)是业界的一种标准
UTF-8就是每次8个位传输数据,而UTF-16就是每次16个位。 UTF-8就是在互联网上使用最广的一种unicode的实现方式, 这是为传输而设计的编码,并使编码无国界,这样就可以显示全世界上所有文化的字符了。 很多的使用UTF-8编码唯一的好处是,国外的用户如果使用Windows XP英文版,浏览UTF-8编码的任何网页,无论是中文、还是日文、韩文、阿拉伯文,都可以正常显示, UTF-8是世界通用的语言编码,UTF-8的推广要归功于Google的应用,以及Blog开发者。
人各有命,上天注定,有人天生为王,有人落草为寇。脚下的路,如果不是你自己的选择,那么旅程的终点在哪,也没人知道。你会走到哪,会遇到谁,都不一定。