如何解决jsp环境下ajax乱码的问题

原创|其它|编辑:郝浩|2009-04-21 10:09:44.000|阅读 703 次

概述:AJAX传递中文字符串时必须把中文字符串编码成unicode,一般会用到JS的自带函数escape()。不过找到了更好的函数来确决中文字符转换成unicode编码的函数。

# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>

AJAX传递中文字符串时必须把中文字符串编码成unicode,一般会用到JS的自带函数escape()。不过找到了更好的函数来确决中文字符转换成unicode编码的函数。

   1. function uniencode(text)  
   2. {  
   3.     text = escape(text.toString()).replace(/\+/g, "%2B");  
   4.     var matches = text.match(/(%([0-9A-F]{2}))/gi);  
   5.     if (matches)  
   6.     {  
   7.         for (var matchid = 0; matchid < matches.length; matchid++)  
   8.         {  
   9.             var code = matches[matchid].substring(1,3);  
  10.             if (parseInt(code, 16) >= 128)  
  11.             {  
  12.                 text = text.replace(matches[matchid], '%u00' + code);  
  13.             }  
  14.         }  
  15.     }  
  16.     text = text.replace('%25', '%u0025');  
  17.    
  18.     return text;  
  19. }

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

   1. function convert_int_to_utf8($intval)  
   2. {  
   3.     $intvalintval = intval($intval);  
   4.     switch ($intval)  
   5.     {  
   6.         // 1 byte, 7 bits  
   7.         case 0:  
   8.             return chr(0);  
   9.         case ($intval & 0x7F):  
  10.             return chr($intval);  
  11.    
  12.         // 2 bytes, 11 bits  
  13.         case ($intval & 0x7FF):  
  14.             return chr(0xC0 | (($intval >> 6) & 0x1F)) .  
  15.                 chr(0x80 | ($intval & 0x3F));  
  16.    
  17.         // 3 bytes, 16 bits  
  18.         case ($intval & 0xFFFF):  
  19.             return chr(0xE0 | (($intval >> 12) & 0x0F)) .  
  20.                 chr(0x80 | (($intval >> 6) & 0x3F)) .  
  21.                 chr (0x80 | ($intval & 0x3F));  
  22.    
  23.         // 4 bytes, 21 bits  
  24.         case ($intval & 0x1FFFFF):  
  25.             return chr(0xF0 | ($intval >> 18)) .  
  26.                 chr(0x80 | (($intval >> 12) & 0x3F)) .  
  27.                 chr(0x80 | (($intval >> 6) & 0x3F)) .  
  28.                 chr(0x80 | ($intval & 0x3F));  
  29.     }  
  30. }

这样中文字符串就可以转换成UTF-8编码,这种方法适合各种服务器环境。


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com

文章转载自:网络转载

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP