伽然官网|AnyForWeb官网|CtrlCRM官网 博客分享:WEB技术|WEB前端|WEB视觉

如何在jsp环境中解决ajax乱码

2015-02-28浏览:
标签Ajax

AJAX传递中文字符串时必须把中文字符串编码成unicode,我们通常使用JS的自带函数escape(),但现在有一种更好的函数可以解决中文字符转换成unicode编码。

 

function uniencode(text)  

{  

   text = escape(text.toString()).replace(/\+/g, "%2B");  

   var matches = text.match(/(%([0-9A-F]{2}))/gi);  

   if (matches)  

   {  

       for (var matchid = 0; matchid < matches.length; matchid++)  

       {  

           var code = matches[matchid].substring(1,3);  

           if (parseInt(code, 16) >= 128)  

           {  

                text =text.replace(matches[matchid], '%u00' + code);  

           }  

       }  

   }  

   text = text.replace('%25', '%u0025');  

   

   return text;  

}

 

服务器端也也会对编码过的字符串进行第二次转码,把字符串转换成UTF-8编码。

 

function convert_int_to_utf8($intval)  

{  

   $intvalintval = intval($intval);  

   switch ($intval)  

   {  

       // 1 byte, 7 bits  

       case 0:  

           return chr(0);  

       case ($intval & 0x7F):  

           return chr($intval);  

   

       // 2 bytes, 11 bits  

       case ($intval & 0x7FF):  

           return chr(0xC0 | (($intval >> 6) & 0x1F)) .  

               chr(0x80 | ($intval& 0x3F));  

   

       // 3 bytes, 16 bits  

       case ($intval & 0xFFFF):  

           return chr(0xE0 | (($intval >> 12) & 0x0F)) .  

                chr(0x80 | (($intval >>6) & 0x3F)) .  

                chr (0x80 | ($intval &0x3F));  

   

       // 4 bytes, 21 bits  

       case ($intval & 0x1FFFFF):  

           return chr(0xF0 | ($intval >> 18)) .  

                chr(0x80 | (($intval >>12) & 0x3F)) .  

                chr(0x80 | (($intval >>6) & 0x3F)) .  

                chr(0x80 | ($intval &0x3F));  

   }  

}

 

这一方法可以将中文字符串顺利转换成UTF-8编码,该方法可以在任何服务器的环境下使用。

 

AnyForWeb将定期发布Web技术博客,涉及程序开发,网站后台等相关技术,敬请期待!



标签



订阅

欢迎订阅《AnyForWeb 程序开发》
博客


热门文章



AnyForWeb 内部博客分享

版权所有 © 2000- AnyForWeb

Oh~What’s up?

您当前访问的网站已关闭!

如需了解Web行业资讯,请进入:

如需了解Web行业资讯,请进入:伽然书院