让JSP文件中直接输入的中文,告别乱码!
前几天,由于工作需要,要对Subversion(一款现在很流行的版本控制软件)的Web客户端SVN Web Client,进行汉化。现有的SVN Web Client是英文版的,界面上大部分英文直接写在JSP文件里。因此,为了方便快速,我决定直修改JSP文件里的英文。把英文翻译成中文,以实现对SVN Web Client的简单汉化。但是,在编辑器里输入的中文,在浏览器上显示却都是乱码。
一开始,我用<%@ page contentType="text/html; charset=GB2312" %>设置JSP页面的编码,页面上的中文能够显示正确。但是,表单提交到服务器上的中文,却都显示乱码。
原来,SVN Web Client系统的Serverlet都是采用UTF-8编码。由于上面的设置,表单是以GB2312编码提交给Serverlet,而Serverlet却把它们当成UTF-8编码进行处理。这样一来,写到服务器上的内容已经就是乱码了。看来,为了不修改Serverlet源代码,只有在JSP页面里也采用UTF-8编码才行。没办法,再想办法吧。
虽然在JSP页面直接输入的中文,在浏览器中显示乱码。但是,如果设置浏览器用GB2312编码进行浏览,这些页面中输入的中文却能够正确显示。只是,这时从数据库里读出的中文,又变成了乱码。这说明数据本身没有损坏,只是编码不一样。一个是GB2312 编号,一个是UTF-8编号。也就是说,我从编辑器里输入的中文是GB2312编码的。那么,只要我在编辑器里输入UTF-8编码的中文就可以了。
我记得原来用EditPlus编辑器另存文件时,有一项是选择编码的。也许,我将原始JSP文件另存为UTF-8编码的,然后再输入的中文就会是UTF-8编码的了。
事实证明,用EditPlus另存为UTF-8编码后,输入的中文确实显示正常。由于这种另存方式,实际就是一种编码转换,所以,原先输入的中文,也能正常显示了。于是,我将原先汉化过的JSP文件,一个一个都转换成UTF-8编码,然后将<%@ page contentType="text/html; charset=GB2312" %>改写为<%@ page contentType="text/html; charset=UTF-8" %>。这样,我输入的中文,终于能在浏览中正确显示出来。我的汉化工作也很快完成了。