$ _SERVER ['QUERY_STRING']不会按原样打印unicode值

sum*_*ith 0 php unicode

http://localhost/fw/api/fw_api.php?rule=unicode&action=create&phrase=????????

我访问上面的网址.在fw_api.php,当我回显$_SERVER['QUERY_STRING']它时,它不会像在URL中那样给出我的Unicode短语值"යුනිකෝඩ්"的实际值.有没有解决这个问题,或者我在做什么/期待有什么问题?需要帮忙.

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

实际结果:

යුනිකෝඩ්

规则= 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

我的期望

යුනිකෝඩ්

规则=统一和行动=创建和短语=යුනිකෝඩ්

dec*_*eze 5

实际值是实际 "%E0%B6%BA%E0%B7%94%E0 ..."!

URL必须由ASCII的子集组成,它们不能包含其他"Unicode字符".您的浏览器可能非常好,以至于您可以输入任意Unicode字符并实际将它们显示为字符,但在幕后,URL值是百分比编码的.你必须用它解码它rawurldecode.

查询字符串由PHP自动解析和解码并放在$_GET数组中(以及$_POST请求体).但是您必须自己解析和解码的原始查询字符串.