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

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;
 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值