Php $\u服务器[';查询字符串';]未按原样打印unicode值
Php $\u服务器[';查询字符串';]未按原样打印unicode值,php,unicode,Php,Unicode,http://localhost/fw/api/fw_api.php?rule=unicode&action=create&phrase=යුනිකෝඩ් 我正在访问上面的url。在fw_api.php中,当我回显$\u服务器['QUERY_STRING']时,它不会给出我的Unicode短语值的实际值”යුනිකෝඩ්" 如URL中所示。是否对此进行了任何修复,或者我是否正在做/期望这里出现错误?需要帮助 header ('Content-type: text/html; charset=ut
http://localhost/fw/api/fw_api.php?rule=unicode&action=create&phrase=යුනිකෝඩ්代码>
我正在访问上面的url。在fw_api.php
中,当我回显$\u服务器['QUERY_STRING']
时,它不会给出我的Unicode短语值的实际值”යුනිකෝඩ්" 如URL中所示。是否对此进行了任何修复,或者我是否正在做/期望这里出现错误?需要帮助
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
我所期望的
යුනිකෝඩ්
rule=unicode&action=create&phrase=යුනිකෝඩ් 实际值实际上是“%E0%B6%BA%E0%B7%94%E0…”
URL必须由ASCII的子集组成,它们不能包含其他“Unicode字符”。您的浏览器可以让您输入任意Unicode字符并实际将其显示为字符,但在幕后URL值是百分比编码的。您必须使用
PHP会自动解析和解码查询字符串,并将其放入$\u GET
数组(以及请求正文的$\u POST
)中。但原始查询字符串必须自己解析和解码
使用特殊字符对值进行编码
$token = "a{l@3a3s9a";
rawurlencode($token); //The coding would be "%7Bl%403a3s9a"
将编码值发送到数据库
通过URL接收参数值
$body = file_get_contents("php://input");
if ($body == null && isset($_SERVER['QUERY_STRING'])) {
parse_str($_SERVER['QUERY_STRING'], $this->parameters);
return;
}
参数值通过parse_str()
自动解码,无需使用rawurldecode()
使用URL(“a”)获得的值{l@3a3s9a“
)
此编码将用于通过URL段获取特殊字符
GL“rawurldecode”解决了我的问题。我也明白了你的意思。非常感谢。很有魅力!