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)眉目來(lái)。
做AJAX應(yīng)用或Flash應(yīng)用,提交中文內(nèi)容到后臺(tái),涉及到編碼解碼(encode、decode)及編碼格式的轉(zhuǎn)換。
網(wǎng)上的PHP端escape unescape函數(shù)建議不要用,它把中英文混合時(shí)的英文過(guò)濾掉了,我是莫名其妙了N久啊,建議用unicode_urldecode這個(gè)。
再就是編碼格式的轉(zhuǎn)換,這主要涉及數(shù)據(jù)的存儲(chǔ)和客戶端返回,用iconv就搞定,這個(gè)函數(shù)似乎是從C++中借鑒來(lái)的。
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í)的英文過(guò)濾掉了,我是莫名其妙了N久啊,建議用unicode_urldecode這個(gè)。
再就是編碼格式的轉(zhuǎn)換,這主要涉及數(shù)據(jù)的存儲(chǔ)和客戶端返回,用iconv就搞定,這個(gè)函數(shù)似乎是從C++中借鑒來(lái)的。
復(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 Session 變量的使用方法詳解與實(shí)例代碼
在php中Session經(jīng)常用來(lái)驗(yàn)證用戶注冊(cè)或登錄之后的驗(yàn)證了,下面我來(lái)總結(jié)session變量的一些常用實(shí)例與用法介紹2013-09-09
php開(kāi)啟與關(guān)閉錯(cuò)誤提示適用于沒(méi)有修改php.ini的權(quán)限
本節(jié)為大家介紹的是php開(kāi)啟與關(guān)閉錯(cuò)誤提示的方法,如果不具備修改php.ini的權(quán)限,可以將如下代碼加入php文件中2014-10-10
php使用pdo連接報(bào)錯(cuò)Connection failed SQLSTATE的解決方法
這篇文章主要介紹了php使用pdo連接報(bào)錯(cuò)Connection failed SQLSTATE的解決方法,涉及針對(duì)配置文件的修改,具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2014-12-12
PHP完全二叉樹(shù)定義與實(shí)現(xiàn)方法示例
這篇文章主要介紹了PHP完全二叉樹(shù)定義與實(shí)現(xiàn)方法,簡(jiǎn)單描述了完全二叉樹(shù)的概念并結(jié)合實(shí)例形式給出了完全二叉樹(shù)的定義、節(jié)點(diǎn)查找、添加、設(shè)置、打印等相關(guān)操作技巧,需要的朋友可以參考下2017-10-10
如何用RabbitMQ和Swoole實(shí)現(xiàn)一個(gè)異步任務(wù)系統(tǒng)
從最開(kāi)始的使用redis實(shí)現(xiàn)的單進(jìn)程消費(fèi)的異步任務(wù)系統(tǒng)到加入swoole的多進(jìn)程消費(fèi)模式,現(xiàn)在,我們的異步任務(wù)系統(tǒng)終于又能邁進(jìn)一步。這回基于RabbitMQ的異步任務(wù)系統(tǒng)設(shè)計(jì)的的更加完善,包括多進(jìn)程消費(fèi),異常重試等。2021-05-05

