PHP实现Unicode编码相互转换的方法示例
本文实例讲述了PHP实现Unicode编码相互转换的方法。分享给大家供大家参考,具体如下:
0){
if(ord(substr($str,$cind,1))<0xA1){//如果为英文则取1个字节
array_push($arr_cont,substr($str,$cind,1));
$cind++;
}else{
array_push($arr_cont,substr($str,$cind,2));
$cind+=2;
}
}
}
foreach($arr_contas&$row){
$row=iconv("gb2312","UTF-8",$row);
}
//转换Unicode码
foreach($arr_contas$key=>$value){
$unicodestr.=$prefix.base_convert(bin2hex(iconv('utf-8','UCS-4',$value)),16,10).$postfix;
}
return$unicodestr;
}
/**
*$strUnicode编码后的字符串
*$decoding原始字符串的编码,默认utf-8
*$prefix编码字符串的前缀,默认""
*$postfix编码字符串的后缀,默认";"
*/
functionunicode_decode($unistr,$encoding='utf-8',$prefix='',$postfix=';'){
$arruni=explode($prefix,$unistr);
$unistr='';
for($i=1,$len=count($arruni);$i<$len;$i++){
if(strlen($postfix)>0){
$arruni[$i]=substr($arruni[$i],0,strlen($arruni[$i])-strlen($postfix));
}
$temp=intval($arruni[$i]);
$unistr.=($temp<256)?chr(0).chr($temp):chr($temp/256).chr($temp%256);
}
returniconv('UCS-2',$encoding,$unistr);
}
$str="PHP编程:www.nhooo.com";
$unistr=unicode_encode($str);
$unistr2=unicode_decode($unistr);
echo$unistr.'
';
echo$unistr2.'
';
$unistr=unicode_encode($str,'GBK','\\u');
$unistr2=unicode_decode($unistr,'GBK','\\u');
echo$unistr.'
';
echo$unistr2.'
';
PS:下面测试过这个函数比较好用,该代码需要在utf-8编码环境下运行
functionunicode_encode($name){//Unicode编码
$jsonarr=array($name);
$jsonstr=json_encode($jsonarr);
if(empty($jsonstr))
return'';
returnsubstr($jsonstr,2,-2);
}
functionunicode_decode($name){//Unicode解码
$json='{"str":"'.$name.'"}';
$arr=json_decode($json,true);
if(empty($arr))
return'';
return$arr['str'];
}
$test="\u811a\u672c\u4e4b\u5bb6";
echo"unicode解码:".unicode_decode($test)."
";
echo"unicode编码:".unicode_encode('毛票票')."
";
PS:这里再为大家提供几款Unicode编码转换操作相关工具供大家参考使用:
在线