急急急!Java解析AJAX的中文URL乱码!

sucful 2007-11-27 02:25:50
在网上查了两天帖子了,中文乱码的问题还是没有解决!
1.系统配置如下:
Tomcat6.0 web.xml已经设置filter为utf-8 server.xml也设置为utf-8
windows xp 中文
IE7.0
2.代码如下
2.1客户端:
<html>
<head>
<meta http-equiv=Content-Type content="text/html;charset=UTF-8">
……
……
createXMLHttpRequest();
var url = "Search?names=" + encodeURI(inputField.value, 'utf-8');
alert('no parse: '+url +';parse: '+ decodeURI(url));//判断javascirpt中是否解析成功
xmlHttp.open("GET", url, true);
xmlHttp.onreadystatechange = callback;
xmlHttp.send(null);
2.2服务器端:
request.setCharacterEncoding("utf-8");
String param_1= new String(request.getParameter("names"));
System.out.println(param_1);
或者
String param_2 =new String(java.net.URLDecoder.decode(request.getParameter("names"), "utf-8"));
System.out.println(param_2);
3.结果:
假如input.value等于“中文”
3.1客户端
返回对话框"no parse: search?name=%E4%B8%AD%E6%96%87; parse: search?name=中文
这应该可以说明javascript对中文参数的字符转换是成功的
3.2服务器端
总是是显示“???”
请高手帮忙!!

...全文
153 点赞 收藏 5
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
sucful 2007-11-27
url 一定要加密两次
回复
sucful 2007-11-27
To kokobox :

真是牛人!
太感谢了!
回复
kokobox 2007-11-27
还有设定请求编码'Content-Type', 'application/x-www-form-urlencoded; charset=utf-8'
回复
anyoneking 2007-11-27
把你的代码中的encodeURI(inputField.value, 'utf-8')改为escape(inputField.value) 试一试!
回复
kokobox 2007-11-27
var getUrl = "/aaa/aaa.do?method=aaa";
var post = "aaa="+aaa+"&aaa="+aaa+"&aaa="+aaa;
post = encodeURI(post);
post = encodeURI(post); //一定要加密两次

xmlHttp.open("GET", getUrl , true);
xmlHttp.onreadystatechange = callback;
xmlHttp.send(post);


服务器端接受:for (Enumeration e = request.getParameterNames(); e.hasMoreElements();) {
String name = (String) e.nextElement();
String v = request.getParameter(name);
String value = java.net.URLDecoder.decode(v, "UTF-8");

if (name.equals("aaa")) {
aaa= value;
}
}

这样两边都不会乱码,返回的时候在url中给中文加密再传过去,就应该没问题了,我是这样做的,没问题。
回复
相关推荐
发帖
Web 开发
创建于2007-09-28

8.0w+

社区成员

Java Web 开发
申请成为版主
帖子事件
创建了帖子
2007-11-27 02:25
社区公告
暂无公告