PHP 中文處理技巧
更新時(shí)間:2010年04月25日 17:34:49 作者:
做AJAX應(yīng)用或Flash應(yīng)用,提交中文內(nèi)容到后臺(tái),涉及到編碼解碼(encode、decode)及編碼格式的轉(zhuǎn)換。
折騰了一天的時(shí)間,才弄出點(diǎn)眉目來。
做AJAX應(yīng)用或Flash應(yīng)用,提交中文內(nèi)容到后臺(tái),涉及到編碼解碼(encode、decode)及編碼格式的轉(zhuǎn)換。
網(wǎng)上的PHP端escape unescape函數(shù)建議不要用,它把中英文混合時(shí)的英文過濾掉了,我是莫名其妙了N久啊,建議用unicode_urldecode這個(gè)。
再就是編碼格式的轉(zhuǎn)換,這主要涉及數(shù)據(jù)的存儲(chǔ)和客戶端返回,用iconv就搞定,這個(gè)函數(shù)似乎是從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);
}
做AJAX應(yīng)用或Flash應(yīng)用,提交中文內(nèi)容到后臺(tái),涉及到編碼解碼(encode、decode)及編碼格式的轉(zhuǎn)換。
網(wǎng)上的PHP端escape unescape函數(shù)建議不要用,它把中英文混合時(shí)的英文過濾掉了,我是莫名其妙了N久啊,建議用unicode_urldecode這個(gè)。
再就是編碼格式的轉(zhuǎn)換,這主要涉及數(shù)據(jù)的存儲(chǔ)和客戶端返回,用iconv就搞定,這個(gè)函數(shù)似乎是從C++中借鑒來的。
復(fù)制代碼 代碼如下:
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);
}
相關(guān)文章
學(xué)習(xí)thinkphp5.0驗(yàn)證類使用方法
這篇文章主要介紹了thinkphp5.0驗(yàn)證類的簡(jiǎn)單有效的使用方法,一起學(xué)習(xí)下。2017-11-11php cookie 作用范圍–不要在當(dāng)前頁(yè)面使用你的cookie
這兩天在調(diào)試bug的時(shí)候遇到了一個(gè)問題,就是頁(yè)面莫名其妙的會(huì)跳轉(zhuǎn)到登陸頁(yè)面2009-03-03Notice: Undefined index: page in E:\PHP\test.php on line 14
Notice: Undefined index: page in E:\PHP\test.php on line 142010-11-11