http://cn.php.net/urldecode のコメントの例よりですが、中国語のエスケープ処理された文字列がこの関数を実行すると、返される中国語の UTF-8 エンコーディングが返されます。
関数 unicode_urldecode($url)
{
preg_match_all('/%u([[:alnum:]]{4})/', $url, $a);
foreach ($a[1] を $uniord として)
{
$dec = hexdec($uniord);
$utf = '';
if ($dec
{
$utf = chr($dec);
}
else if ($dec
{
$utf = chr(192 (($dec - ($dec % 64)) / 64));
$utf .= chr(128 ($dec % 64));
}
それ以外
{
$utf = chr(224 (($dec - ($dec % 4096)) / 4096));
$utf .= chr(128 ((($dec % 4096) - ($dec % 64)) / 64));
$utf .= chr(128 ($dec % 64));
}
$url = str_replace('%u'.$uniord, $utf, $url);
}
urldecode($url)を返します;
}