ajax中文乱码解决方案

 js:

 

    <script type="text/javascript">

          URLencode = function(sStr){

    return escape(sStr).replace(//+/g, '%2B').replace(//"/g,'%22').replace(//'/g, '%27').replace(g,'%2F');

       }

 

          submitAction = function(){

                var exp = /[(*^]|[/)/{/}/[/]//]/g;

                pars = 'key='+escape(URLencode(key.replace(exp,'')));

                url = 'javaAction';

                var myAjax = new Ajax.Request(

url,{

    method:'post',

parameters: pars,

onSuccess: function (originalRequest){

            alert("操作成功");

                                }

                             }

                );

 

  }

    </script>

 

 

java:

 

    编码 Escape 类:

    public class Escape {

        private final static byte[] val = { 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,        

         0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,        

         0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,        

         0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,        

         0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x00, 0x01,        

         0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x3F, 0x3F, 0x3F,        

         0x3F, 0x3F, 0x3F, 0x3F, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x3F,        

         0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,        

         0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,        

         0x3F, 0x3F, 0x3F, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x3F, 0x3F,        

         0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,        

         0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,        

         0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,        

         0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,        

         0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,        

         0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,        

         0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,        

         0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,        

         0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,        

         0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,        

         0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,        

       0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,        

         0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,        

         0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F };    

 

 

public static String unescape(String s) {        

        StringBuffer sbuf = new StringBuffer();        

        int i = 0;        

        int len = s.length();        

        while (i < len) {        

        int ch = s.charAt(i);        

        if ('A' <= ch && ch <= 'Z') {    

        sbuf.append((char) ch);        

        } else if ('a' <= ch && ch <= 'z') {         

        sbuf.append((char) ch);        

        } else if ('0' <= ch && ch <= '9') {     

            sbuf.append((char) ch);        

        } else if (ch == '-' || ch == '_'|| ch == '.' || ch == '!' || ch == '~' || ch == '*'|| ch == '/'' || ch == '(' || ch == ')') {        

        sbuf.append((char) ch);        

        } else if (ch == '%') {    

            int cint = 0;        

            if ('u' != s.charAt(i + 1)) {        

            cint = (cint << 4) | val[s.charAt(i + 1)];        

            cint = (cint << 4) | val[s.charAt(i + 2)];        

            i += 2;        

            } else {        

                cint = (cint << 4) | val[s.charAt(i + 2)];        

                cint = (cint << 4) | val[s.charAt(i + 3)];        

                cint = (cint << 4) | val[s.charAt(i + 4)];        

                cint = (cint << 4) | val[s.charAt(i + 5)];        

                i += 5;        

            }        

            sbuf.append((char) cint);    

        } else {        

            sbuf.append((char) ch);        

        }        

        i++;        

        }        

        return sbuf.toString();        

    }

}

 

     javaAction 类:

         ........

         if(StringUtils.isNotEmpty(name)){

                name = Escape.unescape(name);

         }

         .......

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值