2024年4月2日发(作者:)

使用 tomcat 时,相信大家都回遇到中文乱码的问题,具体表现为通过表单取得的中

文数据为乱码。

一、初级解决方法

通过一番检索后,许多人采用了如下办法,首先对取得字符串按照 iso8859-1 进行

解码转换,然后再按照 gb2312 进行编码,最后得到正确的内容。示例代码如下:

?ptname='我是中国人'

String strPtname = ameter("ptname");

strPtname = new String(es("ISO-8859-1"), "UTF-8");

String para = new String( ameter("para").getBytes("iso8859-1"),

"gb2312");

具体的原因是因为美国人在写 tomcat 时默认使用 iso8859-1 进行编码造成的。

然而,在我们的 servlet 和 jsp 页面中有大量的参数需要进行传递,这样转换的话会

带来大量的转换代码,非常不便。

二、入门级解决方法

后来,大家开始写一个过滤器,在取得客户端传过来的参数之前,通过过滤器首先将

取得的参数编码设定为 gb2312 ,然后就可以直接使用 getParameter 取得正确的参数

了。这个过滤器在 tomcat 的示例代码

jsp-examples 中有详细的使用示例, 其中过滤器在 中的设定如下,示例中

使用的是日文的编码,我们只要修改为 gb2312 即可

1. Set Character Encoding

2. racterEncodingFilter

3.

4. encoding

5. EUC_JP

6.

7.

过滤器的代码如下:

public class SetCharacterEncodingFilter implements Filter {

1. // 编码的字符串