《CSDN采用UTF-8编码是进步还是耻辱》评价介绍
《CSDN采用UTF-8编码是进步还是耻辱》评价介绍
评《CSDN采用UTF-8编码是进步还是耻辱》评论原文地址:
http://blog.csdn.net/williamhong/archive/2006/06/25/832730.aspx
有些话不能这么说。使用UTF-8编码存储非英文字符的时候确实长度增大很多,可实际上UTF-8是Unicode的传输编码。而Unicode实际上可以存储通用的国际化字符。现在的两种比较常见的中文本地编码是GB2312和GBK。GBK兼容GB2312,而且是Windows类操作系统的默认编码字符集。但是GBK并不是一种国际化编码,难道要忍受其他国家的人看不了这种GBK编码的网页?
另外,做过WEB服务器端的都应该明白,当不知道用户提交的字符串用的是什么鬼编码的时候非常郁闷,直接存进数据库的话,可能因为编码问题无法检索这些字符串数据。而要转换的话又不知道上传编码,难道你要总是使用GBK来接收?如果遇到对方提交了BIG5、UTF-8、GB18030、ISO-8859-1、甚至ASCII编码时你怎么处理?
现在我们用UTF-8也很无奈,也知道不爽。但是国际化是软件的未来趋势,Unicode才是一种比较好的出路。而Unicode差就差在不能用于传输,因为其中存储的ASCII字符在高位是0,这样在C程序中会被截断。也正是因为如此才出现了UTF-8来解决这个截断问题,顺便歧视了我们一下。
另外,作者所说的UTF-16是有问题的。现在主流操作系统和编程语言内部使用的编码是Unicode,而不是UTF-16。UTF-16也是Unicode的一种传输编码,也是不定长编码,只是每个单位有16位。正是因为是16位的,所以涉及到大端字节序和小端字节序的问题,所以现在还没见什么应用。
还有不要动则GBK/GB2312就是王道一样,如果你这么认为只能说明你见识尚短。除了微软以外,基本上没见什么软件使用GBK做默认编码的。由UTF-8所造成的乱码问题应该归结为微软为了其自己的利益很多语言版本的操作系统可以分别销售而使用本地编码造成的结果。几乎所有的开原软件一开始就使用UTF-8编码,工作的一直很好。
Unicode是未来的趋势,现在这种过渡阶段还是暂时用UTF-8吧。