2014-10-09 49 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