- 浏览: 39545 次
- 性别:
- 来自: 北京
最新评论
最近在开发中碰到ajax传递中文参数乱码的问题,弄了很久才搞定,在此记录一下开发经过,以备以后查阅。
开发时测试的服务器为tomcat6.0,web前台ajax传输未经编码的中文参数arg=中文参数,java后台通过下面代码获取中文参数:
Java代码
String arg= request.getParameter("arg");
arg = new String(arg.getBytes("ISO-8859-1"), "GBK");
String arg= request.getParameter("arg");
arg = new String(arg.getBytes("ISO-8859-1"), "GBK"); 在实际部署时用的是weblogic8服务器,由于web容器编码方式不同,发现通过上面的代码获取的中文参数为乱码。为了能够兼容不同的web容器,在传递中文时需要将中文参数进行编码:
Js代码
var arg = "中文参数";
arg = encodeURI(encodeURI(arg)); //这里编码两次,不然后台获取时还是乱码
var arg = "中文参数";
arg = encodeURI(encodeURI(arg)); //这里编码两次,不然后台获取时还是乱码
后台通过如下方式获取参数:
Java代码
String arg = request.getParameter("arg");
arg = java.net.URLDecoder.decode(arg, "UTF-8"); //解码取得中文参数
String arg = request.getParameter("arg");
arg = java.net.URLDecoder.decode(arg, "UTF-8"); //解码取得中文参数 在取得中文参数后,经过处理要返回带中文内容的xml格式文本到前台,在tomcat下能够获取正确的内容,但在weblogic8下发现返回的中文内容被截断了,并破坏了xml文档结构(在weblogic 11g没有该问题),查了半天不知道什么原因,即使给中文内容报上<![CDATA[]]>也无效。于是干脆将中文进行编码后在返回到前台页面:
Java代码
java.net.URLEncode.encode("中文内容 ", "UTF-8");
java.net.URLEncode.encode("中文内容 ", "UTF-8"); 前台获取后进行解码:
Js代码
var result = decodeURI(returnValue);
var result = decodeURI(returnValue); 按照上面修改后,在weblogic和tomcat下测试了一下,不管是前台往后台,还是后台往前台传递中文都不会出现乱码。
前台获取中文内容显示在页面上时,发现中文内容后面有一大串的加号,检查了下代码发现,后台进行编码的中文内容中含有空格,java.net.URLEncode.encode()会把空格编码为“+”,而前台就avascript的decodeURI()不会把+号解码为空格。解决方法是将后台编码后的字符串中的“+”替换为“%20”:
Java代码
java.net.URLEncode.encode("中文内容 ", "UTF-8").replace("+", "%20");
开发时测试的服务器为tomcat6.0,web前台ajax传输未经编码的中文参数arg=中文参数,java后台通过下面代码获取中文参数:
Java代码
String arg= request.getParameter("arg");
arg = new String(arg.getBytes("ISO-8859-1"), "GBK");
String arg= request.getParameter("arg");
arg = new String(arg.getBytes("ISO-8859-1"), "GBK"); 在实际部署时用的是weblogic8服务器,由于web容器编码方式不同,发现通过上面的代码获取的中文参数为乱码。为了能够兼容不同的web容器,在传递中文时需要将中文参数进行编码:
Js代码
var arg = "中文参数";
arg = encodeURI(encodeURI(arg)); //这里编码两次,不然后台获取时还是乱码
var arg = "中文参数";
arg = encodeURI(encodeURI(arg)); //这里编码两次,不然后台获取时还是乱码
后台通过如下方式获取参数:
Java代码
String arg = request.getParameter("arg");
arg = java.net.URLDecoder.decode(arg, "UTF-8"); //解码取得中文参数
String arg = request.getParameter("arg");
arg = java.net.URLDecoder.decode(arg, "UTF-8"); //解码取得中文参数 在取得中文参数后,经过处理要返回带中文内容的xml格式文本到前台,在tomcat下能够获取正确的内容,但在weblogic8下发现返回的中文内容被截断了,并破坏了xml文档结构(在weblogic 11g没有该问题),查了半天不知道什么原因,即使给中文内容报上<![CDATA[]]>也无效。于是干脆将中文进行编码后在返回到前台页面:
Java代码
java.net.URLEncode.encode("中文内容 ", "UTF-8");
java.net.URLEncode.encode("中文内容 ", "UTF-8"); 前台获取后进行解码:
Js代码
var result = decodeURI(returnValue);
var result = decodeURI(returnValue); 按照上面修改后,在weblogic和tomcat下测试了一下,不管是前台往后台,还是后台往前台传递中文都不会出现乱码。
前台获取中文内容显示在页面上时,发现中文内容后面有一大串的加号,检查了下代码发现,后台进行编码的中文内容中含有空格,java.net.URLEncode.encode()会把空格编码为“+”,而前台就avascript的decodeURI()不会把+号解码为空格。解决方法是将后台编码后的字符串中的“+”替换为“%20”:
Java代码
java.net.URLEncode.encode("中文内容 ", "UTF-8").replace("+", "%20");
发表评论
-
jquery 下拉菜单
2015-05-08 14:53 601http://sc.chinaz.com/jiaoben/ca ... -
JSP 页面缓存以及清除缓存
2015-01-16 16:15 691JSP 页面缓存以及清除 ... -
ie 浏览器
2013-10-23 16:53 560<!--[if IE]>….<![end ... -
CSS强制文本不换行
2013-09-05 13:14 899在一个规定宽度大小的u ... -
判断浏览器
2013-04-17 11:15 594下面整理的是一套判断方法: function getExplo ... -
JS刷新父窗口的几种方式
2013-01-29 10:40 718JS刷新父窗口的几种方式 浮层内嵌iframe及frame集合 ... -
Javascript 异步加载详解
2012-11-16 10:23 588Javascript 异步加载详解 本文总结一下浏览器在 ja ... -
js map
2012-08-10 08:52 838<mce:script type="text/ ... -
js 全角半角
2012-08-10 08:53 863一、用JS把全角转换成半角(不能转换标点符号) <in ... -
毫秒值转换日期格式
2012-05-11 09:03 1127var oldTime = (new Date("2 ... -
鼠标滚轴事件
2011-12-19 11:33 790鼠标滚轴事件 2009/12/30 11:13 <!DO ... -
键盘按键编码
2011-12-05 11:01 2402<html> <head> </ ... -
火狐 插件安装路径
2011-11-03 17:33 960C:\Documents and Settings\用户名\A ... -
如何让鼠标指针变成一个小手状
2011-09-18 10:46 3519JavaScript中onmouseover时如何让鼠标指针变 ... -
正则表达式
2011-09-13 13:37 676整数或者小数:^[0-9]+\.{0,1}[0-9]{0,2} ... -
jquery 城市选择
2011-05-20 11:22 1657jquery 城市选择 -
jquery 解析 xml
2011-05-02 15:43 828<html xmlns="http://www ... -
按下回车事件
2011-01-18 10:27 937//按下回车事件 <body onKeyDown = ... -
jquery 选择器用法大全
2011-01-18 10:11 764附件中。jquery 选择器用法大全.rar -
js 判断浏览器
2011-01-17 13:20 871在网站前端开发中,浏览器兼容性问题本已让我们手忙 ...
相关推荐
在js中对中文进行编码在java程序中进行解码即可解决中文乱码问题
jQuery传递中文参数乱码,原因是默认的传递方式没有采用UTF-8,所有我们可以在传递参数的时候对参数进行编码,然后再操作,代码如下,红色的代码为传递的参数,已标注 代码如下:smsubmitclick = function(){ $...
主要解决在ajax中中文参数传递过程中,服务器接收到中文乱码的问题
使用Ajax传递中文参数,如果不对参数进行处理的话,传到后台会变成乱码,经测试可以使用如下方法 这里是以jquery.autocomplete插件中获取输入框中的数据传到后台为例: 注意要对中文使用encodeURI编码两次 代码如下:...
AJAX技术使用XMLHttpRequest对象传递参数的中文乱码问题
在使用myeclipse过程中,我使用ajax同步请求传递参数到后台却出现中文乱码,这是我解决问题的代码,希望对您有所帮助
本文实例讲述了escape函数解决js中ajax传递中文出现乱码问题,分享给大家供大家参考。具体方法如下: 一、问题描述: 本来网页特效中的escape()是将中文按iso-8859-1字符集进行url编码的,那样通过 request....
许多人在使用JQuery.ajax方法时肯定会遇到一个问题。在编码不是UTF-8的时候,当传递的参数里有中文的时候,服务端Request的时候都会出现乱码。
Ajax传递参数为中文时出现乱码,我遇到的情况是: 1.我的数据库连接 编码为 GB2312,latin1_swedish_ci 2.php 文件编码格式为 UTF-8,浏览器显示编码为 : UTF-8 3.我的页面显示方式为两种: 一)页面加载时自动加载...
本文实例讲述了JQuery中Post传递中文出现的解决方法,即乱码ajax与jquery.ajax中文参数post传递乱码处理方法。分享给大家供大家参考。具体分析如下: 问题一: 今天在做项目时,需要用到Ajax,之前我在用GET方式传递...
ajax中使用javascript的send方法post参数。当用set方法是会出现中午乱码的问题,该文档说的post方法很好的解决了该问题,具体用法见文档
许多人在使用JQuery.ajax方法时肯定会遇到一个问题。在编码不是UTF-8的时候,当传递的参数里有中文的时候,服务端Request的时候都会出现乱码。
主要介绍了jQuery ajax方法传递中文时出现中文乱码的解决方法,涉及jQuery操作ajax的相关参数及编码的设置方法与注意事项,需要的朋友可以参考下
最近在学jquery ui,在做一个小功能的时候需要将前台的值获取到,通过Ajax传递给Servlet,然后再在返回数据结果,但是在Servlet接受参数的时候,通过后台打印,发现接受乱码,代码示例如下: public void doGet...
ServletActionContext.getResponse().setContentType(“text/json;... 您可能感兴趣的文章:jQuery Ajax Post 回调函数不执行问题的解决方法Javascript基于AJAX回调函数传递参数实例分析ajax回调函数中使用$(this)取不到
页面引入js,通过$.ajax传递参数的时候,对参数使用\$URL.encode(param)方法,对参数进行gbk编码;后台接受参数之后,再使用encoder.encode(param,”gbk”);就可以解析参数了. 大家还有什么问题都可以留言,一起沟通...
今天最早遇到一个脱离平台,单独给用户定制开发的关于状态管理的功能局部刷新出现乱码的情况,仔细查了下代码发现并无特殊之处,charset统一使用GB18030,ajax传递参数使用默认UTF-8,对传递的中文信息手动转码。
页面上用jquery ajax 代码如下:function createQS(name){ var value = encodeURI(name); var queryString = {key:value}; return queryString;} //检索姓名方法function jiansuoByName(k,name){ if (name == ”)...