PHP Unicode编码相互转换
<?php/***$str原始中文字符串*$encoding原始字符串的编码,默认utf-8*$prefix编码后的前缀,默认"&#"*$postfix编码后的后缀,默认";"*/functionunicode_encode($str,$encoding='utf-8',$prefix='&#',$postfix=';'){//将字符串拆分$str=iconv("UTF-8","gb2312",$str);$cind=0;$arr_cont=array();for($i=0;$i<strlen($str);$i++){if(strlen(substr($str,$cind,1))>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.php2.cc";$unistr=unicode_encode($str);$unistr2=unicode_decode($unistr);echo$unistr.'<br/>';echo$unistr2.'<br/>';$unistr=unicode_encode($str,'GBK','\\u');$unistr2=unicode_decode($unistr,'GBK','\\u');echo$unistr.'<br/>';echo$unistr2.'<br/>';
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。