jsp 通过js函数中 嵌套的 ajax 向 servlet中传递参数,出现中文 乱码(问号) 。搜尽全网未能解决。
后台:接受参数。System.out.print(request.getParameter("onebroadcast"));调试发现接收到的就是乱码(??)...
后台:接受参数。System.out.print(request.getParameter("onebroadcast"));调试发现 接收到的 就是 乱码(??)
展开
3个回答
展开全部
第一点要明确,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");
第二点,当后台接受到 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");
展开全部
有几个方法吧,第一
在首选项里面把默认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目录下有。不会可百度。详细的就不说了。自己查查长知识吧。
以上三种方法基本可以解决全部乱码问题。
在首选项里面把默认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目录下有。不会可百度。详细的就不说了。自己查查长知识吧。
以上三种方法基本可以解决全部乱码问题。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
参考答案:这一术语用来概括1600至1750前后一个半世纪某种典型性音乐风格。17世纪,当哲学家、科学家们开始抛弃关于世界的老一套思想方法而建立更为有效、更富于逻辑的认识基础时,音乐家们也在寻求用新的音乐语言来表达新的情感及精神境界,尝试把新的,更为剧烈的情感内容溶入到从文艺复兴时期承袭来的音乐形式当中。直到17世纪中叶,逐渐形成旋律不断延长扩展、富于动力的节奏、强烈的对比与音乐情绪转换等新的音乐语言和风格,使音乐形态在构成的各个方面都得到以往从未有过的发展。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询