相同的字符串,但内部不同。为什么?一个来自$ _GET,另一个来自$ var =""

时间:2014-10-23 08:51:27

标签: php google-chrome url safari url-encoding

我在不同的浏览器中获得了网址的好奇结果。

我在

中有这个网址
example.com&nam=Oprava skúškovej písomky 2012-2013.png

此网址在 Safari

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

Chrome 网址不同:

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");

结果

string(41) "Oprava skúškovej písomky 2012-2013.png" 
string(44) "Oprava skúškovej písomky 2012-2013.png" 

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

1 个答案:

答案 0 :(得分:1)

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

example.com&安培;南= Oprava%20sk%C3%BA%C5%A1kovej%20P%C3%ADsomky%202012-2013.png

在Chrome中,其编码为u + ´u + %CC%81s + ˇ为{} s + %CC%8C

example.com&安培;南= Oprava%20sku%CC%81S%CC%8Ckovej%20pi%CC%81somky%202012-2013.png

但无论如何,当它被解码回来时,它是相同的字符串。

在你的var_dump中你有不同的字符串:

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

在第二个中,你最后有(空格)。