很久没有在BLOG上写技术相关的文章。今天有点感悟,缘于烦在这两种编码方式带来的种种利蔽。
先讲些基础知识,gb2312大家可能听是多,这是我们简体中文的一种编码方式,其中我们的windows xp就广泛使用。而之前大多的中文网页也使用这种编码。而UTF-8,则是一种更先进的编码方式,他又叫万国码,即一种编码兼容了全世界所有的语言,不论你日本仔语,中文或阿拉拍文,通通可以通过utf-8来显示。
光听这两个不同,都会觉得utf-8的厉害和优胜。然而utf-8为什么不普及?为什么他未是王道?主流网站都还是使用gb码编码?这就是历史遗留问题了。最近做了几个项目,都使用utf-8来编码,觉得比较时尚,比较IN和UPDATE,但随之而来渐渐发现用UTF-8不单止没有优势,反而但来很多麻烦。无奈之下,今天把心一横,把FaWenJian.com全部改回了GB编码。
这个问题缘于哪里?主要几个方面。第一是我们的操作系统,Windows不支持utf-8的编码,因此我们的客户机上的文件名,还有软件都是以GB来编码的。这样如果在WEB上使用utf-8,上传文件的话文件名会变成utf-8编码;但了服务器,是Linux,能支持utf-8,于是在服务器上也是以utf-8命名;到了下载的时候就出事了,gb的客户端兼容不了utf-8的文件名下载。再比如,我们用FTP软件登录,这个FTP软件是GB码的,上传到服务器上,也是GB码的;这时候如果想在utf-8的网页上显示,就出问题了。
第二还有其它系统的兼容问题。比如一些邮件系统,他的邮件都是以gb2312来储存;如果我在一上utf-8的WEB上收这个邮箱的信,收回来又是乱码。
等等这些太多,都是历史遗留问题。无疑utf-8是很先进,但最先进的不一定是最好用的。因为你不是生存于一个孤立的系统,你还要考虑到其它不先进的但已经存在的和成熟了的东西。就比如Windows。你可以不考虑他吗?
虽然用PHP的iconv库可以很方便地转换编码,你还可以通过iframe等手段来解决。但其实,用了先进的东西,没有带来方便,还额外多搞了一些手段,只为了UPDATE,值得?
类似的例子还有很多,比如Mysql 4.1与4.0,4.1支持了多种编码字符集(我至今未搞清楚这个概念,是个复杂的东西),但与此同时带来了很多麻烦。赶完潮流之后我还是果断的选择回低版本的4.0,因为他让我免却了很多麻烦事与兼容性。不需要过分地追求先进与完美,只需要够用。因此我总结一句,做全中文的网页,还是选择gb2312编码。再一次验证了KISS (keep it simple & stupid) 的道理。
