为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕尼黑8549860 2022-03-04 14:07:16
后台:接受参数。System.out.print(request.getParameter("onebroadcast"));调试发现 接收到的 就是 乱码(??)
查看完整描述

2 回答

?
呼唤远方

TA贡献1856条经验 获得超11个赞

第一点要明确,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");

查看完整回答
反对 回复 2022-03-07
?
30秒到达战场

TA贡献1828条经验 获得超6个赞

有几个方法吧,第一
在首选项里面把默认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目录下有。不会可百度。详细的就不说了。自己查查长知识吧。
以上三种方法基本可以解决全部乱码问题。



查看完整回答
反对 回复 2022-03-07
  • 2 回答
  • 0 关注
  • 480 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信