Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/267.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/6/google-chrome/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 外观相同的字符串,但内部不同。为什么?一个来自$GET,另一个来自$var="&引用;_Php_Google Chrome_Url_Safari_Url Encoding - Fatal编程技术网

Php 外观相同的字符串,但内部不同。为什么?一个来自$GET,另一个来自$var="&引用;

Php 外观相同的字符串,但内部不同。为什么?一个来自$GET,另一个来自$var="&引用;,php,google-chrome,url,safari,url-encoding,Php,Google Chrome,Url,Safari,Url Encoding,我从不同浏览器的URL中得到了奇怪的结果 我有这个网址 example.com&nam=Oprava skúškovej písomky 2012-2013.png 此url在Safari中解释为: example.com&nam=Oprava%20sk%C3%BA%C5%A1kovej%20p%C3%ADsomky%202012-2013.png 而在浏览器中url则不同: example.com&nam=Oprava%20sku%CC%81s%CC%8Ckovej

我从不同浏览器的URL中得到了奇怪的结果

我有这个网址

example.com&nam=Oprava skúškovej písomky 2012-2013.png
此url在Safari中解释为:

example.com&nam=Oprava%20sk%C3%BA%C5%A1kovej%20p%C3%ADsomky%202012-2013.png
而在浏览器中url则不同:

example.com&nam=Oprava%20sku%CC%81s%CC%8Ckovej%20pi%CC%81somky%202012-2013.png
为什么会这样?因为Safari链接对图片有效,而Chrome链接无效

最终的目标是:

echo "<br>".var_dump($_GET['nam']);
echo "<br>".var_dump("Oprava skúškovej písomky 2012-2013.png");

这些字符串看起来相同,但它们不同。我怎样才能避免这种情况?我想要两个相同的字符串。

在Safari中,我们的斯洛伐克语
u
编码为
%C3%BA

example.com&nam=Oprava%20sk%C3%BA%C5%A1kovej%20p%C3%ADsomky%202012-2013.png

在Chrome中,其编码为
u
+
'
,它是
u
+
%CC%81
,并且
s
+
s
+
%CC%8C

example.com&nam=Oprava%20sku%CC%81s%CC%8Ckovej%20pi%CC%81somky%202012-2013.png

但这并不重要,当它被解码回来时,是同一个字符串

在var_转储中,您有不同的字符串:

echo "<br>".var_dump($_GET['nam']);
echo "<br>".var_dump("Oprava skúškovej písomky 2012-2013.png");
echo“
”.var\u dump($\u GET['nam']); echo“
”.var_dump(“Oprava skúškovej písomky 2012-2013.png");

在第二个示例中,结尾有
(空格)。

这是因为字符串转义。最好不要在文件名中使用字母数字字母,也不要使用空格…有没有相同的字符串转义方法。
ú
等可以在UTF-8中以不同的方式编码。(基本上是直接使用字符
u
,或简单的
u
与变音符号组合。)“我想要两个相同的字符串”-然后URL预先对值进行正确编码(以您拥有的UTF-8编码形式)Safari工作:Chrome不工作:那么有没有办法告诉你,比如rawurlencode()要像safari中那样对转义字符串进行编码?为什么您的html标题中有这个?
?这不是XML…您认为这会导致问题吗?好的,让我们来看看。我尝试不使用这个标题。至少它不应该在那里…只有html标题您确定使用函数
urlencode
,然后
urldecode
echo "<br>".var_dump($_GET['nam']);
echo "<br>".var_dump("Oprava skúškovej písomky 2012-2013.png");