您的位置:首页 > 其它

Ajax 开发中遇到的乱码问题

2009-04-25 22:49 120 查看
Ajax开发过程中提交获取数据的乱码问题

摘录
# re: Ajax开发过程中提交获取数据的乱码问题 2006-09-06 15:32 | 乌鸦在黑夜里飞

实际上所有的问题都来自编码的不统一:

1、HTTP/POST方式在缺省情况下,采用的是“x-www-form-urlencoded”进行编码,它和JavaScript里面的encodeURI所起的作用是一样的;

2、经过这样编码的内容,到达后台时,其中的字符都是UTF-8编码格式的;

3、如果你的Servlet/JSP指定输出使用的Content-Type是UTF-8,恭喜你,你不需要对这些Parameters进行特别的编码、解码操作,它一定是正常的;

4、否则你需要对这些parameter进行解、编码操作,例如你的页面是GBK编码,那么你需要这么写:

String sPara = new String(request.getParamter("test").getBytes("iso-8859-1"),"GBK");

采用gb2312编码的也可以采用GBK编码;

5、如果你是在eclipse中进行工作,请注意你的Servlet和JSP文件的属性,其中的编码必须和content-type中设置的一样,否则javac会对你的文件进行错误的编码,这时候的字节码文件本身的字符串就是错误的,输出也不顶用;

6、最后做一个总结:

6.1、servlet/JSP文件本身的编码必须和content-type输出的一致,否则需要加入额外的编码、解码步骤;

6.2、HTTP/POST方式和encodeURI方式传入的编码都是UTF-8的;

6.3、普通的window.open(...),也就是HTTP/GET方式,其传入的编码是和运行script的页面编码一致的;

6.4、后台解码必须通过iso-8859-1进行解码,再使用你的目标编码进行编码;

6.5、所有的问题基本上可以得到解决。

回复 更多评论

解决AJAX的乱码,可以用 escape()函数的呀。

escape 方法不能够用来对统一资源标示码 (URI) 进行编码。对其编码应使用 encodeURI 和encodeURIComponent 方法。

在asp中解决乱码问题只需要在服务器端加上<%Response.ContentType = "text/html;charset=GB2312"%>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: