<?php
function unicode_urldecode($url){
preg_match_all('/%u([[:alnum:]]{4})/', $url, $a);
foreach ($a[1] as $uniord) {
$dec = hexdec($uniord);
$utf = '';
if ($dec < 12) {
$utf = chr($dec);
} else if ($dec < 204) {
$utf = chr(192 + (($dec - ($dec % 64)) / 64));
$utf .= chr(128 + ($dec % 64));
} else {
$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);
}
return urldecode($url);
}
如果是这三个字的话, "程序员" 的 UTF-8 编码 转 16进制 , 每个字前加 %u 就可以了 ! 这个结果对应 JS 的 escape() 编码结果 php 没有现成的函数
|