jsp页面通过ajax传中文到服务器出现乱码的问题!急!

naofantian 2008-04-23 05:51:08
今天遇到巨诡异的问题,公司的高手也没找到解决办法。望各位出谋划策,小弟不胜感激!!!

我要做这样一个功能:

A客户端【jsp】--访问-->B服务器---->获得服务器的一个FTP文件夹内的图片类型文件的列表---->

把值返回给A客户端---->A客户端从列表中选择一个文件1---->

调用ajax---->把B服务器上的FTP文件夹的文件1拷贝到PUB文件夹内---->

把文件1在PUB文件夹内的服务器B上的相对URL返回给---->A客户端

问题是:我的文件1是中文名字,在调用ajax向服务器传值时,中文都是?号。

公司的高手已经用尽他的方法和网上说的各种方法,依然是问号。

真郁闷!!!
===========================================================================================
这是客户端的js代码
if(document.all.localfile.style.display != "" && document.all.dmsfile.style.display != ""){
//获得服务器文件路径
var serverURL = eval("document.all.<%=acceptobj%>Id2");
var trurServerURL = escape(serverURL.value);
alert("客户端获得的服务器端绝对文件地址:"+trurServerURL);
var url = "/***/chooseimg.ucms?ProcessAction=chooseFileFromFTP&trurServerURL="+trurServerURL+"&acceptobj=<%=acceptobj%>&sCMSSiteId=<%=sCMSSiteId%>";
alert("Ajax用到的action :"+url);
//调用Ajax根据value从服务器拷文件到服务器
if (window.XMLHttpRequest) {
   req = new XMLHttpRequest();
   }else if (window.ActiveXObject) {
   req = new ActiveXObject("Microsoft.XMLHTTP");
   }
   if(req){
   req.open("POST",url, false);
   req.onreadystatechange = complete;
   req.send(null);
   }

}
function complete(){
   if (req.readyState == 4) {
   if (req.status == 200) {

   var over = req.responseText; //服务器端返回的字符串
alert(over);
document.all.imgcode.value=over;

window.parent.opener.addImg(document.all.imgcode.value);
window.close();
}
}
}
============================================================================================
服务器端代码
System.out.println("获得参数trurServerURL "+hParams.get("trurServerURL"));

……
trurServerURL=unescape(trurServerURL);
=============================================================================================

大家有什么办法解决,或者有什么办法能绕过ajax传中文值,把字符串串到后台。

思路,思路…………请赐予我思路吧………………

各位帮帮忙吧……谢谢大家了!!
...全文
493 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
yunan567 2011-02-14
  • 打赏
  • 举报
回复
escape(escape(serverURL.value));

为什么还要多加escape啊!!
naofantian 2008-04-23
  • 打赏
  • 举报
回复
……问题解决了……escape(escape(serverURL.value));就对了……

我靠了,还是互联网上牛人多……

naofantian 2008-04-23
  • 打赏
  • 举报
回复
再弄不出来,老板非把我开了…………

加了escape后台就获得不了字符串,是null

不加就是问号……

我靠,太诡异了……
ajax码解决总结 第一,javascript沿用java的字符处理方式,内部是使用unicode来处理所有字符的, 第二,utf-8是每个汉字(unicode字符)用3个字节来存储。 第三,用utf-8来send数据是不会出现码的,是后台程序没有正确解码才会出现码。 第四,ajax发送数据的时候如果修改 Content-Type 为 application/x-www-form-urlencoded",肯定是用post方式,而“太大的数据往往会出错”是用GET方式发送数据造成的。 第五,用vbscript写的函数是用来把数据转成gbk编码(操作系统默认的编码方式。如果在繁体系统上就是big5之类的编码)的,而不是gb2312,两者的编码字符数量相差3倍左右。 第六,用cookie来发送数据,一是很容易溢出,二是要不停的擦屁股,否则cookie里面的数据在每个http请求(包括图片和脚本请求)中都会被发送。三是并发几个http请求的时候,没有办法指定那个cookie是要发送给那个http请求的。 ------------------------ 用AJAX 来GET回一个页面时,RESPONSETEXT里面的中文多半会出现码,这是因为xmlhttp在处理返回的responseText的时候,是把 resposeBody按UTF-8编码进解码考形成的,如果服务器送出的确实是UTF-8的数据流的时候汉字会正确显示,而送出了GBK编码流的时候就 了。解决的办法就是在送出的流里面加一个HEADER,指明送出的是什么编码流,这样XMLHTTP就不会搞了。 PHP:header('Content-Type:text/html;charset=GB2312'); ASP:Response.Charset("GB2312") JSP:response.setHeader("Charset","GB2312");

52,797

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 Ajax
社区管理员
  • Ajax
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧