那么如果解决这个问题呢?
要统一四方面的编码(有的人仅仅在
页面中加入一些代码就声称解决编码问题,其实根本没有解决真正的问题所在)。
第一方面,就是开发人员在编写代码的时候所使用的编码方式,这很重要。如果在程序中使用硬编码的方式写入一些静态文本,在本机似乎看起来一切正常,可是到了另一台电脑,情况可能就完全不同了。要知道
B/S
结构的软件是面向全球的,有谁会知道对方在使用那种编码呢?比如现在一般常用的
IDE
使用的默认编码是
UTF-8 ,
在软件完成之后,在另一个只支持
gb2312
的编码里有可能就是一串乱码。如果程序中涉及到中文的硬编码,最好将编辑器的字符集设置为
GBK
因为
GBK
对英文字符编码方式是兼容的,这样在国外可以看到英文,国内也可以看到中文,这种做法对于面向国内用户的网站来说是最好的做法了,如果主要是面向国外,则使用默认的
UTF-8
是最好的选择。
第二方面,输入法的编码设置,很多人在被乱码问题弄得头晕的时候往往不会意识到自己的输入法有问题。其实中文在输入的时候,输入法肯定要选择一种字符集进行编码的,如果输入法的字符集是
UTF-8
那么只支持
GBK
和
gb2312
的浏览器显示的肯定会是乱码,解决方式如上,将输入法的字符集设置为
GBK
以获得最好的兼容性。
第三方面,数据库的字符编码设置,就拿
MySql
来说,在安装配置的时候,
Mysql
会提示用户选择某一个特定的字符集,对于使用中文的软件来说,选择
GBK
仍旧是最好的选择。
第四方面,
java
虚拟机编译时的字符集设置,如果输入的是
GBK
而编译
JSP
使用的是
UTF-8
的话,那么一切又都乱了。所以可以在编译参数里写入
-encoding GBK
这样一切都是
GBK
格式,中文的现实才被解决了,当然也可以全部设置为
UTF-8
或者
GB2312
对于国内网站来说
GBK
仍旧是最佳选择。但不管选择哪种方式,一定要让这四个方面的编码方式保持一致,否则乱码随时都有可能出现。
编码问题不是一时半会所能解决的。即使以上这四个方面都做到了,在美国的用户如果使用
UTF-8
字符集的浏览器访问
GBK
的中文网站,仍旧会使乱码一团。这是一个历史原因,在将来的某个时刻,或许会被最终解决。