免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1663 | 回复: 1
打印 上一主题 下一主题

高手请进:ajax乱码问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-09-28 13:00 |只看该作者 |倒序浏览
环境
   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里面还是。。

   这就怪了,是不是??

   有没有高手给以解答呢???

论坛徽章:
0
2 [报告]
发表于 2006-09-28 15:39 |只看该作者
mysql里用的好象是iso8859-1。原来因为这个问题郁闷过一周,后来跟它拼了,把所有需要编码的地方来了个全排列。也很就没用mysql了,查阅了一下以前写的,好像主要是iso8859-1与utf-8之间的转换就可以了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP