折騰了一天的時間,才弄出點眉目來。
做AJAX應用或Flash應用,提交中文內容到後台,涉及到編碼解碼(encode、decode)及編碼格式的轉換。
網上的PHP端escape unescape函數建議不要用,它把中英文混合時的英文過濾掉了,我是莫名其妙了N久啊,建議用unicode_urldecode這個。
再就是編碼格式的轉換,這主要涉及數據的存儲和客戶端返回,用iconv就搞定,這個函數似乎是從C++中借鑒來的。
復制代碼 代碼如下:
function unicode_urldecode($url)
{
preg_match_all('/%u([[:alnum:]]{4})/', $url, $a);
foreach ($a[1] as $uniord)
{
$dec = hexdec($uniord);
$utf = '';
if ($dec < 128)
{
$utf = chr($dec);
}
else if ($dec < 2048)
{
$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);
}