PHP 中文處理技巧
更新時間:2010年04月25日 17:34:49 作者:
做AJAX應(yīng)用或Flash應(yīng)用,提交中文內(nèi)容到后臺,涉及到編碼解碼(encode、decode)及編碼格式的轉(zhuǎn)換。
折騰了一天的時間,才弄出點眉目來。
做AJAX應(yīng)用或Flash應(yīng)用,提交中文內(nèi)容到后臺,涉及到編碼解碼(encode、decode)及編碼格式的轉(zhuǎn)換。
網(wǎng)上的PHP端escape unescape函數(shù)建議不要用,它把中英文混合時的英文過濾掉了,我是莫名其妙了N久啊,建議用unicode_urldecode這個。
再就是編碼格式的轉(zhuǎn)換,這主要涉及數(shù)據(jù)的存儲和客戶端返回,用iconv就搞定,這個函數(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)容到后臺,涉及到編碼解碼(encode、decode)及編碼格式的轉(zhuǎn)換。
網(wǎng)上的PHP端escape unescape函數(shù)建議不要用,它把中英文混合時的英文過濾掉了,我是莫名其妙了N久啊,建議用unicode_urldecode這個。
再就是編碼格式的轉(zhuǎn)換,這主要涉及數(shù)據(jù)的存儲和客戶端返回,用iconv就搞定,這個函數(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)文章
php開啟與關(guān)閉錯誤提示適用于沒有修改php.ini的權(quán)限
本節(jié)為大家介紹的是php開啟與關(guān)閉錯誤提示的方法,如果不具備修改php.ini的權(quán)限,可以將如下代碼加入php文件中2014-10-10
php使用pdo連接報錯Connection failed SQLSTATE的解決方法
這篇文章主要介紹了php使用pdo連接報錯Connection failed SQLSTATE的解決方法,涉及針對配置文件的修改,具有一定的參考借鑒價值,需要的朋友可以參考下2014-12-12
如何用RabbitMQ和Swoole實現(xiàn)一個異步任務(wù)系統(tǒng)
從最開始的使用redis實現(xiàn)的單進程消費的異步任務(wù)系統(tǒng)到加入swoole的多進程消費模式,現(xiàn)在,我們的異步任務(wù)系統(tǒng)終于又能邁進一步。這回基于RabbitMQ的異步任務(wù)系統(tǒng)設(shè)計的的更加完善,包括多進程消費,異常重試等。2021-05-05

