HTML中需要指定网页所使用的编码,一般指定的方式为:
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
而在新版本HTML5中,也可以使用更简单的方式:
<meta charset="UTF-8">
因为世界上所用的语言文字很多,为了满足跨语言、跨平台进行文本转换、处理的要求,国际组织研制了Unicode编码,于1994年正式公布,并不断升级,提供了1,114,112个码点,定义了包括古文字符号在内的人类所有可读字符的字符集。但Unicode编码为了表示那么多字符,通常使用32位(即4个字节)来表示一个字符,需要占用比较大的存储空间,对常用的字符(如ASCII)也需要较长的编码,内存使用效率比较低。
为此,定义了一种使用8位编码单元的变宽的编码格式UTF-8。UTF-8编码中,一些常用的字符可以使用较少的字节来表示,而较少使用的字符则使用较多的字节,提高了编码占用空间的效率。如ASCII码仍使用一个字节来表示,这是通过识别编码中一些高位的来实现的,它搭建了ASCII编码和Unicode的桥梁。具体编码方式为:
- 0000~007F:0xxxxxxx,存储为一个字节,有7位可表示不同的字符,一般对应ASCII字符
- 0080~07FF:110xxxxx,10xxxxxx,存储为两个字节,有11位可表示不同的字符
- 0800~FFFF:1110xxxx,10xxxxxx,10xxxxxx,存储为3个字节,有16位用来表示不同的字符
- 10000~1FFFFF:11110xxx,10xxxxxx,10xxxxxx,10xxxxxx,存储为4个字节,有21位表示不同的字符
可以看到规律:如果最高位不是0,那么数字中在0前面的数字表示一个序列包括的码元数。一个序列中,第一个码元之后的所有码元都有10前缀。Unicode编码还有UTF-16、UTF-32等其他的编码格式,但UTF-8更采用,同样也可以表示所有的编码集。
过去在计算机中表示汉字最常用的是GB2312编码,1980年发布,全称为《信息交换用汉字编码字符集--基本集》,它使用两个字节来表示一个汉字,共收入6763个汉字和682个非汉字图形字符,兼容于ASCII字符集。但这种编码中包含的汉字比较少,不能表示港台使用的繁体字,一些非常用字及古书中的字也无法表示,实用中会感到很多不便。后来,在GB2312基础上进行了扩展,也就是GBK编码标准,可以表示繁体字及一些异体字,使用范围得到扩展。
为了适合更广范围的应用,又发布了GB18030编码标准,GB18030-2000收录了27533个汉字,GB18030-2005则收录了70244个汉字,并包含了藏、蒙古、傣、彝、朝鲜、维吾尔文等多种少数民族文字。GB18030的总编码空间超过150万个码位,编码采用单字节、双字节和四字节对字符编码,单字节部分采用GB/T11383的编码结构与规则,使用0x00至0x7F码位,对应于ASCII码的相应码位;双字节部分,首字节码位从0x81至0xFE,尾字节码位分别是0x40至0x7E和0x80至0xFE;四字节部分采用GB/T11383未采用的0x30到0x39作为对双字节编码扩充的后缀,这样扩充的四字节编码,其范围为0x81308130到0xFE39FE39。GB18030编码还在不断扩充中。
为了更多地表示汉字及一些特殊符号,也为了未来更好地兼容性,新制作的网页最好使用GB18030标准,也就是使用下面两种方式之一指定编码:
<meta http-equiv="Content-Type" content="text/html;charset=gb18030"> <meta charset="gb18030">
当然,为了显示外国文字方便,也可以使用国际通用的UTF-8编码。