PHP 跟 Javascript 都有 HTML encoding 的函式,編碼過的結果雖然類似,但是還是有些微的不同,所以不能互轉。
二者的差異可以可參考:
http://web.archive.org/web/20030811181238/http://php.weblogs.com/php_jscript_vbscript_1
節錄如下:
PHP:
urlencode( ) All punctuation, accented characters, and any other non-ASCII characters are replaced with %xx encoding. Spaces converted to +.
urldecode( )All punctuation, accented characters, and any other non-ASCII characters are replaced with %xx encoding. Spaces converted to +.
Javascript:
escape(str) All spaces, punctuation, accented characters, and any other non-ASCII characters are replaced with %xx encoding
那要如何用 PHP 來讀取 escape() 編碼過的字串呢?
可以用以下的方式來讀取 (範例為 Unicode 解譯為 big5)
修改自:http://web.archive.org/web/20041031225806/http://vivian.stripper.jp/index.php?itemid=100
$str = uniDecode($str,'big-5'); function uniDecode($str,$charcode){ $text = preg_replace_callback("/%u[0-9A-Za-z]{4}/",toUtf8,$str); return mb_convert_encoding($text, $charcode, 'utf-8'); } function toUtf8($ar){ foreach($ar as $val){ $val = intval(substr($val,2),16); if($val < 0x7F){ // 0000-007F $c .= chr($val); }elseif($val < 0x800) { // 0080-0800 $c .= chr(0xC0 | ($val / 64)); $c .= chr(0x80 | ($val % 64)); }else{ // 0800-FFFF $c .= chr(0xE0 | (($val / 64) / 64)); $c .= chr(0x80 | (($val / 64) % 64)); $c .= chr(0x80 | ($val % 64)); } } return $c; }
4 comments On 使用 PHP 解譯 javascript escape() 編碼過的字串
可否把你网页上的字体改为新细明体,这样可能好看一点.^-^
「escape()」會把「語言」編碼成「%u8A9E%u8A00」
「encodeURI()」會把「語言」編碼成「%E8%AA%9E%E8%A8%80」
請問,怎樣把「中文」編碼成ANSI字串
如:「語言」編碼成「%BBy%A8%A5」
Both of the link is dead
看起來網站真的掛了,可以到 archive.org 裡面看
第一個連結:
http://web.archive.org/web/20030811181238/http://php.weblogs.com/php_jscript_vbscript_1
第二個連結:
http://web.archive.org/web/20041031225806/http://vivian.stripper.jp/index.php?itemid=100