ajax中文亂碼解決方案

來源:互聯網
上載者:User

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

        }

         .......

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.