JavaWeb开发过程中从js通过Ajax传递参数到Controller层遇到的中文乱码和特殊符号无法显示的问题。
1.中文乱码的处理方法:
(1)在js页面相关代码如下
var url ="这些是中文";
url=encodeURI(encodeURI(url));//转码两次,很关键
(2)在Controller层的java类中得到url编码后的字符串并解码,相关代码如下
//获得ajax传来的字符串
String memberName = request.getParameter("memberName");
try {
//对字符串进行解码
memberName = java.net.URLDecoder.decode(memberName, "UTF-8");
当然如果遇到特殊字符的话比如说"&","+","#"都需要进行相应的处理如下
2.特殊字符传递过程中的处理
(1)js页面的处理
var url= "#@+&这些带有特殊字符";
url=encodeURI(encodeURI(url));//转码两次,很关键
url = url.replace(/\+/g,"+");
url = url.replace(/\&/g,"&");
url = url.replace(/\#/g,"#");
(2)Controller层java类的处理
//获得ajax传来的字符串
String memberName = request.getParameter("memberName");
//将+号编码,否者解码会消失
memberName = StringUtil.replaceAll(memberName, "+", "+");
try {
//对字符串进行解码
******************************
StringUtil.replaceAll()方法解释如下:
-----------------------------
得到特殊符号的编码的方法如下: