1、使用POST方式传参
sPara += sName + "=" + encodeURI(encodeURI(sValue)) + "&";
xmlHttp.onreadystatechange = handleStateChange;
xmlHttp.open( "POST" , sURL , true );
xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
xmlHttp.send(sPara);
注意,这里我使用了两次encodeURI,encodeURI(encodeURI(sValue))
String providerName = request.getParameter("providerName");
//post 传递的时候,一定是用utf8编码的
providerName = URLDecoder.decode(providerName , "utf-8");
分析:当调用request.getParameter()函数时,会自动进行一次URI的解码过程,调用时内置的解码过程会导致乱码出现。而URI 编码两次后,request.getParameter()函数得到的是原信息URI编码一次的内容。再用可控的解码函数 java.net.URLDecoder.decode()就可解出原始的正确的信息。
2、使用GET方式传参
GET方式要比POST方法好转码,但是它有字符限制
有两种方式
一、在后台添加unescape方法进行解码
前台使用javascript的escape方法进行转码
public static String unescape (String src)
{
StringBuffer tmp = new StringBuffer();
tmp.ensureCapacity(src.length());
int lastPos=0,pos=0;
char ch;
while (lastPos<src.length())
{
pos = src.indexOf("%",lastPos);
if (pos == lastPos)
{
if (src.charAt(pos+1)=='u')
{
ch = (char)Integer.parseInt(src.substring(pos+2,pos+6),16);
tmp.append(ch);
lastPos = pos+6;
}
else
{
ch = (char)Integer.parseInt(src.substring(pos+1,pos+3),16);
tmp.append(ch);
lastPos = pos+3;
}
}
else
{
if (pos == -1)
{
tmp.append(src.substring(lastPos));
lastPos=src.length();
}
else
{
tmp.append(src.substring(lastPos,pos));
lastPos=pos;
}
}
}
return tmp.toString();
}
二、直接使用encodeURI进行转码
前台直接使用encodeURI进行转码
在后台使用request.getParameter("name");就可以得到原始数据。
原因可能是,当调用request.getParameter()函数时,程会自动进行一次URI的解码过
这几种方式都主要用于,前台向后台传数据,后台向前台转数据没有描述
注:文章主要用于自己的经验积累,所以没有写的太细,如有人来看,看不懂也不要骂我啊
分享到:
相关推荐
Ajax中文乱码问题解决方案
ajax乱码问题.ajax乱码问题的一些解决方案,总结网友的一些方法。
Ajax 中文乱码问题 Ajax 中文乱码问题 Ajax 中文乱码问题
解决ajax异步提交后台取值中文乱码问题,提供两种解决方法
jquery+asp ajax 中文乱码问题解决文档
当遇到这个问题时,到网上去查了好多文章,提到几种解决方案,如:全站UTF-8编码;请求头编码为中文;使用javascript中的escape函数。 使用GET方式提交数据的时候,中文问题很好解决,setrequestheader("Content-...
ajax提交时,后台接收的参数出现中文乱码的解决方法,
ajax乱码ajax乱码ajax乱码ajax乱码ajax乱码ajax乱码ajax乱码ajax乱码ajax乱码ajax乱码
GBK编码下jQuery_Ajax中文乱码解决方案
简单整理的乱码处理方案,jquery的ajax解决UTF-8以及GBK的问题
java认证_Ajax中文乱码问题及解决方法.doc
本人收集的解决Ajax的乱码解决办法,自己试了很多,确实能够解决问题。
基于jsp后台java解决ajax异步传输中文乱码问题.
struts,ajax乱码解决方案
解决AJAX中文乱码问题,本人亲测,测试系统WIN2008,其他系统请自行测试。包括源码和说明
今天弄了一天的Ajax中文乱码问题,Ajax的乱码问题分为两种: 1. JavaScript输出的中文乱码, 比如:alert(“中文乱码测试”); 解决的办法比较简单,就是把jsp里所有的charset和pageEncoding的值都设置成相同...
ajax中文乱码问题在中文中经常会出现这种问题,其实只要稍加注意就不会出现ajax中文乱码这回事情了,注意前后台编码一致.你用的是中文.而ajax传输数据的时候用的是utf-8 ,还有对ajax get方法时最好escape 或urlcode,...
这个是解决AJAX和JS传中文乱码的最终解决方案 如果你在用AJAX和JS过程中遇到这个问题就可以这样解决 不管你是什么GBK 或者UTF-8或者其他的编码,放上这个代码都是可以解决的
Ajax解决乱码问题