April 24th, 2008

今天无意中看到老王的技术手册中对 unicode 字符串的转换方法。

才想起以前自己做的一个转换程序时,也碰到过这样的问题,几乎被遗忘了。避免忘记,与大家分享一下这两种方法。

老王掘出来的被遗忘的mb_convert_encoding方法:mb_convert_encoding(’醉爱’, ‘UTF-8′, ‘HTML-ENTITIES’);

我以前做的一个方法,对比上面的来说,很笨。不过在没有 mb 扩展的时候还是可以参考一下的。

function unescape($str){
$str = rawurldecode($str);
preg_match_all(”/&#(\d+);/U”,$str,$r);
$arr = $r[1];
$cstr = array();
foreach($arr as $number){
$cstr[] = iconv(”UCS-2″,”GBK”,pack(”n”,$number));
}
return join(”",$cstr);
}

unescape(’醉爱’);