tomcat5下的中文问题?

03-12-05 agilejava
最近下了一个tomcat5,发现以前的一个Filter不能用了。问题如下:

这个过虑器的主要作用是设置字符集,类似下面的代码

request.setCharacterEncoding("gb2312");
<p class="indent">

以前在tomcat4下面调用
requet.getParameter()
时,中文可以正常处理;

但在tomcat5下就全是乱码了,
request.setCharacterEncoding("gb2312");
就好像失效了一样。
如果用下面的代码就没有问题了

String user = request.getParameter("username");
String user2 = new String(user.getBytes("iso8859-1"));
<p class="indent">


这是什么原因啊,请指教!谢谢!

raynix
2003-12-05 18:53
很可能是因为tomcat5是sevlet spec2。4的RI,所以直接用spec2。3的配置会有问题。

agilejava
2003-12-06 13:28
今天没有用filter,直接在一个servlet中测试下面的句子:
request.setCharacterEncoding("gb2312");

同样的语句在tomcat4中没有问题,从request中取出的中文是正常的,但在tomcat5中取出的中文却是乱码,这是怎么回事?

谢谢!

agilejava
2003-12-06 16:03
昨天给apache发了一个bug报告,有人也发现了这个问题,据apahce说,tomcat在connector中增加了一个属性URIEncoding="GBK",设置了这个属性以后,就没有中文问题了。但这样好像使用得程序中灵活性差了些,比如对big5的支持就得自己编码实现了,在tomcat4中可以根据客户的language来自动在filter中设置request中Encoding,但在tomcat5中这样设置就没有用了,不知道各位有没有更好的解决方法。

bullboss
2003-12-07 03:30
什么也不加,就会OK,参看tomcat5的servlet的例子

agilejava
2003-12-07 10:08
什么也不加就会OK?

下面的代码是从RequestParamExample这个例子中的:

String firstName = request.getParameter("firstname");
String lastName = request.getParameter("lastname");
        
System.out.println("firstName:"+firstName);//这是我加上的

<p class="indent">


页面的输出没问题,但是在我的机子上

System.out.println("firstName:"+firstName)
的输出是firstName:??。输出的是乱码,这是怎么回事?谢谢!

agilejava
2003-12-07 12:38
to bullboss:

我就用得是这个servlet,只不过在里面加了一条输出语句。

System.out.println("firstName:"+firstName);

在我的机子上就输出就是乱码,你也可以试一试!

猜你喜欢