猿问

如题,在ajax 向 servlet中传递参数时,出现中文乱码(问号) ,请问该怎么解决?

后台:接受参数。System.out.print(request.getParameter("onebroadcast"));调试发现 接收到的 就是 乱码(??)

慕尼黑8549860
浏览 482回答 2
2回答

呼唤远方

第一点要明确,ajax 发送的中文是以什么 编码(GBK 或utf-8 或 iso-8859-1)发送给后台servlet 的,第二点,当后台接受到 ajax发过来的请求时,你要设置 用什么编码去解析 ajax发送过来的数据request.setCharacterEncoding("???");上2步弄明白了,就不会出现乱码。第一, ajax 发送字符的编码是由这个网页所决定的,这个网页的字符编码是 UTF-8,那么 ajax发送的字符就以 utf-8 发送到后台(不过 form表单里面的有个属性可以设置以什么字符编码发送给后台)。你在页面知道是 UTF-8编码(或者用 document.charset 获取编码),但是 后台不知道,所以,在ajax中设置一个 charset属性为 utf-8(xmlHttp.setRequestHeader("Context-Type", "Charset=UTF-8");),告诉后台 发过来的是 utf-8编码的字符,第二,上面说到 http请求中 charset 属性指明编码为 utf-8,但是,服务器不会给你自动转换,默认都是使用 iso-8859-1(谁叫服务器都是老外开发的,他们根本都没想到这玩儿会流行全世界,会有各种各样的字符编码,不过提供了一个方法让我们自己设置编码也算高明的了),所以后台页面要你自己获取这个值,然后 设置转换编码request.setCharacterEncoding("UTF-8");

30秒到达战场

有几个方法吧,第一在首选项里面把默认jsp页面编码格式改为UTF-8.具体设置方法可百度,参考我的<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>(其他格式的也行。个人爱UTF-8)第二,在servlet中加上这么一句话,response.setContentType("text/html");request.setCharacterEncoding("UTF-8");response.setCharacterEncoding("utf-8");可能是这个问题的概率大。(注:会设置项目全部去过滤则不用这么麻烦一般这样也行)。第三转换全球通用格式。比如a=您好就可以转换为a=\u60A8\u597D。把后面那个字母数字的东西放到哪里也不会乱码。转换软件JDK目录下有。不会可百度。详细的就不说了。自己查查长知识吧。以上三种方法基本可以解决全部乱码问题。
随时随地看视频慕课网APP

相关分类

Java
JQuery
我要回答