最近下了一个tomcat5,发现以前的一个Filter不能用了。问题如下:
这个过虑器的主要作用是设置字符集,类似下面的代码
|
以前在tomcat4下面调用
requet.getParameter() |
但在tomcat5下就全是乱码了,
request.setCharacterEncoding("gb2312"); |
如果用下面的代码就没有问题了
|
这是什么原因啊,请指教!谢谢!
最近下了一个tomcat5,发现以前的一个Filter不能用了。问题如下:
这个过虑器的主要作用是设置字符集,类似下面的代码
|
requet.getParameter() |
但在tomcat5下就全是乱码了,
request.setCharacterEncoding("gb2312"); |
|
这是什么原因啊,请指教!谢谢!
很可能是因为tomcat5是sevlet spec2。4的RI,所以直接用spec2。3的配置会有问题。
今天没有用filter,直接在一个servlet中测试下面的句子:
request.setCharacterEncoding("gb2312");
同样的语句在tomcat4中没有问题,从request中取出的中文是正常的,但在tomcat5中取出的中文却是乱码,这是怎么回事?
谢谢!
昨天给apache发了一个bug报告,有人也发现了这个问题,据apahce说,tomcat在connector中增加了一个属性URIEncoding="GBK",设置了这个属性以后,就没有中文问题了。但这样好像使用得程序中灵活性差了些,比如对big5的支持就得自己编码实现了,在tomcat4中可以根据客户的language来自动在filter中设置request中Encoding,但在tomcat5中这样设置就没有用了,不知道各位有没有更好的解决方法。
什么也不加,就会OK,参看tomcat5的servlet的例子
什么也不加就会OK?
下面的代码是从RequestParamExample这个例子中的:
|
页面的输出没问题,但是在我的机子上
System.out.println("firstName:"+firstName) |
to bullboss:
我就用得是这个servlet,只不过在里面加了一条输出语句。
System.out.println("firstName:"+firstName);
在我的机子上就输出就是乱码,你也可以试一试!