字符编码:GBK、GB2312、UTF-8
UTF-8:Unicode TransformationFormat-8bit,允许含 BOM,但通常不含 BOM。是用以解决国际上字符的一种
多字节编码,它对英文使用 8 位(即一个字节),中文使用 24 为(三个字节)来编码。UTF-8 包含全世界所
有国家需要用到的字符,是国际编码,通用性强。UTF-8 编码的文字可以在各国支持 UTF8 字符集的浏览器上
显示。如,如果是 UTF8 编码,则在外国人的英文 IE 上也能显示中文,他们无需下载 IE 的中文语言支持包。
GBK 是国家标准 GB2312 基础上扩容后兼容 GB2312 的标准。GBK 的文字编码是用双字节来表示的,即不论
中、英文字符均使用双字节来表示,为了区分中文,将其最高位都设定成 1。GBK 包含全部中文字符,是国家
编码,通用性比 UTF8 差,不过 UTF8 占用的数据库比 GBK 大。
GBK、GB2312 等与 UTF8 之间都必须通过 Unicode 编码才能相互转换:
GBK、GB2312<===>Unicode<===>UTF8
对于一个网站、论坛来说,如果英文字符较多,则建议使用 UTF-8 节省空间。不过现在很多论坛的插件一般
只支持 GBK。
简单来说,unicode、gbk 和大五码就是编码的值,而 utf-8、uft-16 之类就是这个值的表现形式。而前面那三种
编码是不兼容的,同一个汉字,那三个码值是完全不一样的。如"汉"的 uncode 值与 gbk 就是不一样的,假设
unicode 为 a040、gbk 为 b030,而 uft-8 码,就是把那个值表现的形式。utf-8 码完全只针对 uncode 来组织的,
如果 gbk 要转 urf-8 必须先转 uncode 码,再转 utf-8 就 OK 了。
需要注意的是,Unicode 只是一个符号集,它只规定了符号的二进制代码,却没有规定这个二进制代码应该如
何存储,互联网的普及,强烈要求出现一种统一的编码方式。 UTF-8 就是在互联网上使用最广的一种 unicode
的实现方式。其他实现方式还包括 UTF-16 和 UTF-32,不过在互联网上基本不用。重复一遍,这里的关系是,
UTF-8 是 Unicode 的实现方式之一。
二、网页编码就是那点事
1、ANSI、GBK、GB2312、UTF-8、GB18030 和 UNICODE
这几个编码关键词是比较常见的,虽然我把我们放在了一起说,但并不意味这这几个东西是平级的关系。本部
分的内容,引用自网络略有修改,不知原文出处,故无法署名。
很久很久以前,有一群人,他们决定用 8 个可以开合的晶体管来组合成不同的状态,以表示世界上的万物,他
们把这称为”字节”。再后来,他们又做了一些可以处理这些字节的机器,机器开动了,可以用字节来组合出很
多状态,状态开始变来变去,他们就把这机器称为”计算机”。
开始计算机只在美国用。八位的字节一共可以组合出 256(2 的 8 次方)种不同的状态。他们把其中的编号从 0 开
始的 32 种状态分别规定了特殊的用途,一但终端、打印机遇上约定好的这些字节被传过来时,就要做一些约
定的动作。遇上 00×10, 终端就换行,遇上 0×07, 终端就向人们嘟嘟叫,例好遇上 0x1b, 打印机就打印反白的字,
或者终端就用彩色显示字母。他们看到这样很好,于是就把这些 0×20 以下的字节状态称为”控制码”。