Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php $\u服务器[';查询字符串';]未按原样打印unicode值_Php_Unicode - Fatal编程技术网

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”解决了我的问题。我也明白了你的意思。非常感谢。很有魅力!