赞Firefox,赞FireBug

今天在折腾一个Ajax的东西,结构大概是:MySQL数据库->用Axis搭的WebService->前端Ajax应用。应用服务器是tomcat。
由于数据库里面已经用了gbk的编码,而且WebService的服务端代码也写好了,不愿意再改成utf8的,所以整个系统就走了gbk编码的路线。
提交表单的乱码比较好办,getBytes就行了。
Ajax提交参数的时候很是遇到了一些麻烦,用JS的escape之类的方法总是莫名其妙的出错,不知道是不是我自己手误了。最后用Java的URLEncoder先encode了中文参数,接收端new String(getBytes("ISO-8859-1"),"gbk");
在Ajax接受服务端传来的gbk编码的数据的时候遇到了乱码。查了一下,应该是httprequest对象在将 responseBody decode成responseText的时候默认是按照utf-8的方法来进行decode的,简单的方法是在服务端设置response的header,网上搜到的解决方法一般是说response.setHeader("Charset","GB2312"),但是我用了之后没有效果,感到异常迷茫。。
这时候,伟大的Firefox和FireBug帮助了我。。。。FireBug0.4.1版本具有显示XMLHttpRequest的信息的功能,我用它看了一下,response的header和body都显示出来了,而header里面赫然有一行“Content-Type=text/html;charset=iso-8859-1",干。。。于是我把那句setHeader改成了response.setHeader("Content-Type","text/html;charset=gbk");
问题解决。。。

这里再次向Firefox和FireBug致敬,真是web开发者的福音!

Leave a Reply