PHP如何获取包含特殊字符的URL而不进行urlencode编码!

3
我希望使用 file_get_contents 获取类似这样的URL:http://wapedia.mobi/sv/Gröt。问题在于它请求了(无法发布完整链接,抱歉):...wapedia.mobi/sv/Gr%C3%B6t,你可以看到已经进行了URL编码,该页面不会给我任何结果。如何解决呢?
1个回答

1
根据PHP手册,如果URL包含特殊字符,则必须对其进行特定编码。这意味着函数本身不应进行任何特殊编码。很可能您的URL在传递给函数之前已被编码,因此请先通过urldecode进行传递并查看结果。 编辑:您说编码出了问题。同样,PHP手册明确指出,在将URL传递给file_get_contents之前,需要对其进行编码。尝试对URL进行编码,然后再将其传递给函数。
$url = urlencode($url);
file_get_contents($url);

wapedia.mobi/sv/Gr%C3%B6t之前是可以正常工作的。抱歉,但我的 PHP 脚本正在请求:Gr%F6t。为什么会这样?我该如何对其进行编码(Gröt),以便最终变成:Gr%C3%B6t。非常感谢。 - Johan
1
我解决了这个问题。它源于JavaScript函数将字符串作为GET参数传递给PHP文件。所以我猜这并不是一个PHP问题,对此很抱歉。我最初使用JavaScript的escape()函数进行编码,但是我发现使用encodeURIComponent在UTF-8下效果更好。非常感谢您的时间和帮助。 - Johan
谢谢Johan,你建议使用'encodeURIComponent'对我很有帮助! - user425727

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接