日期:2014-05-16  浏览次数:20461 次

js纯手动ajax乱码问题
今天用js写了一个ajax提交数据的Demo,前台写了一个输入框,使用ajax的方式提交到后台,依旧是乱码问题,很郁闷的是,无论我怎么去改前台的页面编码格式和后台的编码格式,甚至我还更改了提交的字符串的编码格式,它在后台依旧是一串乱码,于是我就去百度搜了一下js的ajax乱码问题,终于解决了这个问题。参考地址:http://blog.csdn.net/zhanngle/article/details/2063490
原来真正的原因是因为,ajax传数据到servlet中,是要经过一个url解码的过程,在这个过程中,浏览器会选择一种默认的解码方式,如果你的后台的编码格式与之不同,则会出现乱码问题,在这个解决方案中,要传到后天的数据事先经过了两次转码,然后经过浏览器解码,然后自己手动解码一次,共解码两次,最终得到的就是传输的字符串。

前台到后台的数据传输乱码问题虽然已经解决了。但是新的问题又来了,ajax经过后台处理输出到前台的数据又乱码了,这两天,真的是各种乱码,于是,又是到处找资料,终于只是在servlet的get方法头部加了一句response.setContentType("text/xml;charset=UTF-8"); //设置文本类型编码格式
主要是后面的那个charset=utf-8;乱码问题就解决了。
摘自网上:
response.setContentType(MIME)的作用是使客户端浏览器,区分不同种类的数据,并根据不同的MIME调用浏览器内不同的程序嵌入模块来处理相应的数据。

不懂什么意思。不是在页面已经有了设定处理数据的方式的mime吗?为什么在后台还要去设置?