发现个小bug,请波总看看

大白熊 发布于 2015/10/10 10:36
阅读 188
收藏 0

@JFinal 你好,想跟你请教个问题:

getPara(0),这种获取url参数的方法,对于中文没有做处理,直接拆分的,所以会造成中文乱码,所以是不是应该加上

......

action = mapping.get(url.substring(0, i));
urlPara[0] = url.substring(i + 1);
//中文会是乱码
try {
urlPara[0] = URLDecoder.decode(urlPara[0],Config.getConstants().getEncoding());
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}

......

加载中
1
Feng_Yu
Feng_Yu
如果用的是tomcat,在connector中是有一个URIEncoding=UTF-8属性的,加上这个属性
大白熊
大白熊
回复 @Feng_Yu : tomcat中的URIEncoding=UTF-8这个属性设置了,不设置的话getParam("name")这种方式也是乱码,设置后这种方式可以,但是getParam(0)这种方式不可以。。。
Feng_Yu
Feng_Yu
回复 @大白熊 : 在tomcat这个级别没启用URIEncoding的UTF-8支持的话,传递过去的URI就不是UTF8的,自然乱码了
大白熊
大白熊
通过参数名的方式可以,参数名方式是request.getparameter()获取的没有问题。但是通过参数索引不行,因为我看源码是直接截取URL后面的参数获取的,
0
JFinal
JFinal
   是用的 tomcat 还是 jetty? 容器所用的字符集设置成 utf8 就会是正确的
大白熊
大白熊
tomcat中的URIEncoding=UTF-8已经设置了,用getPara("name")这种方式获取没有问题,但是getParam(0)这种方式还是乱码
0
loyal
loyal
从严格的角度来讲,你要用restful就不应该出现地址含有中文.
大白熊
大白熊
对,但是是特殊情况。。。
返回顶部
顶部