您的位置:首页 > 编程语言 > Java开发

js传中文和特殊符号到java处理方法

2014-09-04 21:26 351 查看
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");

} catch (UnsupportedEncodingException e1) {

e1.printStackTrace();

}

当然如果遇到特殊字符的话比如说"&","+","#"都需要进行相应的处理如下

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 {

//对字符串进行解码

memberName = java.net.URLDecoder.decode(memberName, "UTF-8");

} catch (UnsupportedEncodingException e1) {

e1.printStackTrace();

}



******************************

StringUtil.replaceAll()方法解释如下:



static public String replaceAll(String str, String oldStr, String newStr) {

int i = str.indexOf(oldStr);

int n = 0;

while (i != -1) {

str = str.substring(0, i) + newStr

+ str.substring(i + oldStr.length());

i = str.indexOf(oldStr, i + newStr.length());

n++;

}

return str;

}

-----------------------------

得到特殊符号的编码的方法如下:

public String encode(String id) {

String encode_id = "";

try {

encode_id = URLEncoder.encode(id, "UTF-8");

} catch (UnsupportedEncodingException e) {

e.printStackTrace();

}

return encode_id;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: