1. 如需正确地显示html页面, 浏览器必须知道使用何种字符集。
2. 万维网早期使用的字符集是ASCII。ASCII支持0-9的数字, 大写和小写英文字母表, 以及一些特殊字符。
3. 由于很多国家使用的字符并不属于ASCII, 现代浏览器的默认字符集是ISO-8859-1。
4. 如果网页使用不同于ISO-8859-1的字符集, 就应该在<meta>标签进行指定。
5. 拉丁字母
5.1. 拉丁字母(罗马字母), 是目前世界上流传最广的字母体系, 源自希腊字母。
5.2. 起源
5.2.1. 拉丁文的字母约公元前7世纪~前6世纪时, 由希腊字母间接发展而来, 成为古罗马人的文字, 古罗马灭亡前共包含24个字母, 其中有18个辅音字母B、C、D、F、G、Z、H、K、L、M、N、P、Q、R、S、T、X、Y, 4个元音字母A、E、I、O, 和一个音值不定的V, 11世纪时增加了J、U、W, 形成了今天的26个字母。古代拉丁字母只有大写字母, 书写无标点。
5.3. 发展
5.3.1. 在早期的拉丁字母体系中并没有小写字母, 公元4世纪~7世纪的安塞尔字体和小安塞尔字体是小写字母形成的过渡字体。
5.3.2. 15世纪是欧洲文化发展极为重要的时期, 流传下来的罗马大写字体和卡罗琳小写字体通过意大利等国家的修改设计, 完美地融合在一起。
5.4. 1958年中华人民共和国颁布了以拉丁字母为基础制定的汉语拼音。
5.5. 使用情况
6. ASCII字符集
6.1. ASCII(American Standard Code for Information Interchange: 美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统, 主要用于显示现代英语和其他西欧语言。它是最通用的信息交换标准, 并等同于国际标准ISO/IEC 646。ASCII第一次以规范标准的类型发表是在1967年, 最后一次更新则是在1986年, 到目前为止共定义了128个字符。
6.2. 表达方式
6.2.1. ASCII码使用指定的7位或8位二进制数组合来表示128或256种可能的字符。
6.2.2. 标准ASCII码也叫基础ASCII码, 使用7位二进制数(剩下的1位二进制为0)来表示所有的大写和小写字母, 数字0到9、标点符号, 以及在美式英语中使用的特殊控制字符。
6.2.3. 0~31及127(共33个)是控制字符或通信专用字符。如控制符: LF(换行)、CR(回车)、FF(换页)、DEL(删除)、BS(退格)、BEL(响铃)等。通信专用字符: SOH(文头)、EOT(文尾)、ACK(确认)等。它们并没有特定的图形显示, 但会依不同的应用程序, 而对文本显示有不同的影响。
6.2.4. 32~126为可显示字符。32是空格, 48~57为0到9十个阿拉伯数字, 65~90为26个大写英文字母, 97~122号为26个小写英文字母, 其余为一些标点符号、运算符号等。
6.3. ASCII标准表
6.4. 问题编辑
6.4.1. 在英语中, 用128个符号编码便可以表示所有, 但是用来表示其他语言, 128个符号是不够的。比如: 在法语中, 字母上方有注音符号, 它就无法用ASCII 码表示。于是, 一些欧洲国家就决定, 利用字节中闲置的最高位编入新的符号。比如: 法语中的é的编码为130(二进制10000010)。这样一来, 这些欧洲国家使用的编码体系, 可以表示最多256个符号。
6.4.2. 但是, 这里又出现了新的问题。不同的国家有不同的字母, 因此, 哪怕它们都使用256个符号的编码方式, 代表的字母却不一样。比如: 130在法语编码中代表了é, 在希伯来语编码中却代表了字母Gimel (ג), 在俄语编码中又会代表另一个符号。但是不管怎样, 所有这些编码方式中, 0-127表示的符号是一样的, 不一样的只是128-255的这一段。
6.4.3. 至于亚洲国家的文字, 使用的符号就更多了, 汉字就多达10万左右。一个字节只能表示256种符号, 肯定是不够的, 就必须使用多个字节表达一个符号。比如: 简体中文常见的编码方式是 GB2312, 使用两个字节表示一个汉字, 所以理论上最多可以表示: 256 x 256 = 65536个符号。
7. ISO字符集
7.1. ISO字符集是国际标准组织(ISO)针对不同的字母表/语言定义的标准字符集。
7.2. 下面列出了世界各地使用的不同字符集:
8. ISO-8859-1
8.1. ISO-8859-1编码是单字节编码, 向下兼容ASCII, 其编码范围是0x00-0xFF, 0x00-0x7F之间完全和ASCII一致, 0x80-0x9F之间是控制字符, 0xA0-0xFF之间是文字符号。
8.2. 此字符集支持部分于欧洲使用的语言, 包括阿尔巴尼亚语、巴斯克语、布列塔尼语、加泰罗尼亚语、丹麦语、荷兰语、法罗语、弗里西语、加利西亚语、德语、格陵兰语、冰岛语、爱尔兰盖尔语、意大利语、拉丁语、卢森堡语、挪威语、葡萄牙语、里托罗曼斯语、苏格兰盖尔语、西班牙语及瑞典语。
8.3. ASCII编码是一个7位的容器, ISO-8859-1编码是一个8位的容器。
8.4. ISO-8859-1的较低部分(从1到127之间的代码)是最初的7比特ASCII。
9. 汉字编码
9.1. GB2312、GBK、GB18030是汉字字符编码方案的国家标准。
9.2. GB2312是1980年制定的中国汉字编码国家标准。共收录7445个字符, 其中汉字6763个。GB2312兼容标准ASCII码, 采用扩展ASCII码的编码空间进行编码, 一个汉字占用两个字节, 每个字节的最高位为1。
9.3. GBK于1995年制定, 使用双字节编码, 编码空间为0x8140~0xFEFE, 收录了21003个汉字。GBK向下与GB2312编码兼容, 向上支持ISO 10646.1国际标准, 是前者向后者过渡过程中的一个承上启下的产物。
10. Unicode标准
10.1. 由于上面列出的字符集都有容量限制, 而且不兼容多语言环境, Unicode联盟开发了Unicode标准。
10.2. Unicode标准涵盖了世界上的所有字符、标点和符号。
10.3. 不论是何种平台、程序或语言, Unicode都能够进行文本数据的处理、存储和交换。
10.4. Unicode标准已经获得了成功, 在XML、Java、ECMAScript(JavaScript)、LDAP、CORBA 3.0、WML中, Unicode已经得到了实现。在许多操作系统以及所有的现代浏览器中, Unicode同样得到了支持。
10.5. Unicode可以被不同的字符集兼容。最常用的编码方式是UTF-8和UTF-16。
10.6. UTF8中的字符可以是1-4个字节长。UTF-8可以表示Unicode标准中的任意字符。UTF-8向后兼容ASCII。UTF-8是网页和电子邮件的首选编码。
10.7. UTF-16: 16比特的Unicode转换格式是一种Unicode可变字符编码, 能够对全部Unicode指令表进行编码。UTF-16主要被用于操作系统和环境中, 比如微软的Windows 2000/XP/2003/Vista/CE以及Java和.NET字节代码环境。