- 论坛徽章:
- 0
|
环境
jdk1.4+tomcat+mysql4.1
描述一下现象
页面A,是一个表单,里面有输入域a,b,c其中c可能会输入中文,点击确定通过ajax提交数据,javascript是这样写的。
http_requst=创建函数;
http_request.onreadystatechange=alert(http_requst.responseText);
datas = "a="+a.value+"&b="+b.value+"&c="encodeURI(+c.value);
http_request.open("POST",url,true);
data_req.setRequestHeader("Content-Length",datas.length);
data_req.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
data_req.send(datas);
页面B是接受数据的;
c = request.getParameter("c");
session.setAttribute("c",c);
页面C是显示session的,测试用
out.print(session.getAttribute("c"));
运行A,提交数据,获得一个alert,c里面的中文正常显示.但通过B写到数据库里面是乱码。
运行C,打印出来的是乱码,是用浏览器gb2312,但把浏览器编码格式改为unicode查看,就能正确显示
通过网上查资料,说ajax通过POST传数据是用utf8格式传的,xmlhttprequest返回的responseText也是默认utf8返回的。所以在A页面里面alert正常,这也可以解释得过去。
下面是我的问题,既然B里面获得的C是utf8格式,但我通过new String(c.getBytes("utf8"),gb2312); 这样把c转成gb2312数据,那就能正确显示了吧,但是却发现还是乱码。new String(c.getBytes("ISO-8859-1"),gb2312); 依然是。new String(c.getBytes("utf8"),“GBK”); 还是。。。new String(c.getBytes("utf8"),“ISO-8859-1”);还是。。。 反正通过这几种码的互转都是乱码,插到MYSQL里面还是。。
这就怪了,是不是??
有没有高手给以解答呢??? |
|