您的位置:首页 > 其它

dtree中url参数中中文参数的传递,出现乱码问题的解决。

2014-03-15 18:48 696 查看
String name="张三";

int id=3;

//两次进行编码

name=java.net.URLEncoder.encode(name,"UTF-8");

name=java.net.URLEncoder.encode(name,"UTF-8");

url="/test/search.do?name="+name+"&"+id;//

一下是controller内的相应

@RequestMapping("/search.do”)

public String search(@RequestParam("name")String name, @RequestParam("id")int id)



       name=java.net.URLDecoder.decode(name,"UTF-8");//此时name是张三

       ....................

}

       原因分析:在浏览器地址栏里,浏览器认为%是个转义字符,浏览器会把%与%之间的编码,两位两位取出后进行解码,然后再传递给处理页面,然后由处理页面进行再次解码,所以需要使用两次URLEncoder.encode方法。

        第一次是把中文编码成%xy的格式; 第二次是对%xy中的%进行编码,%编码成%。客户端和服务器在传递数据时可以用过滤器filter解决字符编码问题,但filter只能解决post方式提交的数据。对于get方式,可以使用两次java.net.URLEncoder.encode并在服务器中使用java.net.URLDecoder.decode  今天在springmvc遇到这个问题,尽管页面、类和web容器都统一了字符编码,提交的数据依然是乱码,所以就采用了2次URLEncoder。encode编码方式,乱码问题就解决了。

        当然,不管在js中,还是后台,只是调用的编码解码函数不同而已,问题解决原理,却是一样的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  乱码 utf-8