现在的位置: 首页 > 综合 > 正文

JS中文字符串转换unicode编码函数

2014年02月01日 ⁄ 综合 ⁄ 共 1328字 ⁄ 字号 评论关闭

<script type="text/javascript" language="javascript">
//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)
{    
$intval = 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编码.这种方法适合各种服务器环境..
</script>

抱歉!评论已关闭.