GB18030 的正式名称为“中文国家标准 GB 18030-2000:信息技术 - 信息交换用汉字编码字符集- 基本集的扩充”。它是针对在中国出售的所有产品制定的政府强制标准要求,该标准于 2001 年 9 月 1 日生效。这也意味着从理论说,每个在出售的产品都要支持GB18030字编码字符集,否则就不让卖[嘿嘿,您的产品达标了么?]。
有人曾经在他的一篇blog[ http://blog.cathayan.org/archive/1/2005-7-4 ]里非常形象的介绍过 GB18030 的历史,转贴精彩部分如下:
1,GB2312是很老的东西了,早就发现不够用了。
2,94年(还是之前)国家推出了建议性标准gb18000(还是13000我忘了),这个标准其实就是utf-8标准(除了名字,完全一样),同时也建议微软公司采纳。--(据说是1993年,GB13000,应该是ISO10646)
3,微软借口说gb18000还不成熟,为了取得中国市场的垄断地位,自己搞了一套汉字标准,于是它就随着win95和office之类的流行起来了,国家看生米已经煮成了熟饭,只好把这套标准定为国标GBK标准。--(其实只是指导性标准,并非强制性,GB18030是强制性标准)
4,微软到了99年(前后吧),又说GBK已经落伍了,现在流行utf-8标准,准备全盘转换成utf-8,这些把有关部门惹怒了。NND,当年我们推utf-8你说不成熟,自己搞了一套,现在赚得盆满钵满了又自己说要推utf-8了,你丫微软分明就没把政府放在眼里。
5,于是政府怒了,强制推行gb18030标准(这个标准前面兼容GBK,其他码位兼容utf-8),算是过渡标准吧。要求微软强制执行,否则产品不得在大陆买。于是基本搞死了微软的WindowsMe,差点搞死了Office2000(据说发行前几个月,微软除了改字符编码就没干其他什么事情)--(确实,WinMe是我认为的最差的Windows版本,而office2k也是前不着村,后不着店,前后兼容性都差)
6,由于以上历史原因,现在就是GB2312,GBK,GB18030,UTF-8并存了。
7,如果不是万恶的微软,我们早就用上UTF-8了。
或许正是因为微软和中国之间为GB18030发生了这么多的恩恩怨怨和当年微软的仓促上阵,直到现在微软的很多产品对GB18030支持的依然不是很好。访问下面的页面,了解MS对GB18030支持情况及下载Windows下的GB18030安装包:
http://www.microsoft.com/globaldev/DrIntl/columns/015/default.mspx
虽然MS声明在Windows XP 和 Windows 2000 中通过"add-on"来支持GB18030,但是IE 6.0直接显示 List Box、Drop Down Menu、Text Area、Text Field中的GB18030字符依然还是有问题,下面的这篇文章有相关的介绍:
http://www-306.ibm.com/software/globalization/gb18030support/retrieve.jsp
在IBM的这篇名为"Globalize your On Demand Business"的文章里,给出的solution是在要显示GB18030的元素上加上类似 "STYLE="font-family:'SimSun-18030'"的CSS声明。在当今WEB2.0如火如荼的年代,我们当然要把内容和显示分离,在CSS中进行配置!当然实际问题要比这个文档说的略微复杂一点,有下面几个比较明显的问题:
1) 一般来说,大部分html标签(包括Input)都不要,但<Select> 要必须要在CSS中强制指定"font-family"为"SimSun-18030"。
2) 当要为一个元素指定多个字体的时候,要将"SimSun-18030"作为首选,即放在最前面。
3) 对于大部分标签,当font-family设为 SimSun-18030 时,而font-size 为:8pt,9pt,11px 时,有一部分字符比如 "㊣"和一些标点 会显示成其他的字符,对 "㊣" 这样的字符,IE 会出现乱码。原因可能是因为这些个font-size针对WEB做了优化。
小结:GB18030是个形式大于内容的东西,但是如果想要让你的产品理直气壮的再中国销售,略微花点时间设置一下还是有必要的。