2014-10-09 89 views
0

http://localhost/fw/api/fw_api.php?rule=unicode&action=create&phrase=යුනිකෝඩ්

我訪問上述URL不打印Unicode值。在fw_api.php中,當我回顯$_SERVER['QUERY_STRING']時,它不會像URL中那樣給出我的Unicode短語值「යුනිකෝඩ්」的實際值。有沒有解決這個問題,或者我在做什麼/在這裏期待什麼錯誤?需要幫忙。

header ('Content-type: text/html; charset=utf-8'); 
echo $_GET['phrase']; 
echo $_SERVER['QUERY_STRING']; 
die; 

實際結果:

යුනිකෝඩ්

規則= unicode的&行動=創建&短語=%E0%B6%BA%E0%B7%94%E0%B6%B1% E0%B7%92%E0%B6%9A%E0%B7%9D%E0%B6%A9%E0%B7%8A

我預計

යුනිකෝඩ්

規則= unicode的&行動=創建&短語=යුනිකෝඩ්

回答

5

實際實際上 「E0%B6%BA%E0%B7%94%E0%......」 !

URL必須由ASCII的子集組成,它們不能包含其他「Unicode字符」。您的瀏覽器可能非常好,可以讓您輸入任意的Unicode字符,並將它們實際顯示爲字符,但幕後的URL值爲%,編碼爲。你必須用rawurldecode來解碼它。

查詢字符串將自動被PHP解析並解碼,並放入$_GET數組(請求正文爲$_POST)。但是您必須解析和解碼自己的原始查詢字符串。

+0

「rawurldecode」解決了我的問題。我也明白你的觀點。非常感謝你。 – sumith 2014-10-09 08:17:45

+0

作爲魅力! – raBne 2016-11-17 23:58:08