使用哈希 (#) 打开 Google 网址失败;转换为 %23

使用哈希 (#) 打开 Google 网址失败;转换为 %23

在 OSX 上,当我尝试打开包含哈希的 URL 时#,它会被转换为 %23 并且失败。例如,

在命令提示符下,

$ open "https://translate.google.com/#auto/en/ру́сский+язы́к"

给我一个Error 404来自谷歌的

The requested URL /%23auto/en/%D1%80%D1%83%CC%81%D1%81%D1%81%D0%BA%D0%B8%D0%B9+%D1%8F%D0%B7%D1%8B%CC%81%D0%BA was not found on this server. That’s all we know.

当我使用该命令时,Applescript 也会发生同样的情况open location

这是发生在我这边还是来自谷歌?我该如何让这些网址正常工作?根据这个答案它应该可以工作。


编辑:

我禁用了互联网连接,然后尝试打开上述网址,结果是一样的,#变成了%23。还尝试了 Chrome,我使用的是 Firefox,结果是一样的。所以变化是由 OSX 本身发生的。

顺便说一句,如果你将上述内容复制并粘贴到浏览器中,它就可以正常工作,因此 URL 本身没有问题。

最后,我正在使用 Snow Leopard (10.6.8)

解决了:根据以下答案,查询字符串必须进行编码。这个答案中有一句话帮助,

/bin/echo -n "some foreign text" | php -r "echo urlencode(file_get_contents('php://stdin'));"

答案1

您写的是“俄语+语言”。

俄语翻译中使用了特殊字符。URL 中的特殊字符被编码为“%??”等值字符,作为这些字符的参考。

我为你查了一下,以便你可以看到:http://www.w3schools.com/tags/ref_urlencode.asp

URL 不知道什么是特殊字符。你在编程吗?如果是这样,你必须找到一种等效方法将字符转码为 URL 可以识别的内容。

以下是与特殊字符相关的进一步调查的在线解码器:http://www.asiteaboutnothing.net/c_decode-url.html

答案2

本质上,问题在于它open不是一个网络浏览器,在传递信息时无法区分两种特殊情况浏览器:

  • ( URL#auto片段)应按原样传递
  • 其余文本必须进行 URL 编码以适应“较旧”的浏览器。

不同的浏览器可能在命令行上处理这些 URL 的方式与使用界面的方式不同。如果您在命令行上直接调用 Firefox 打开给定的 URL,它会按预期工作。

进一步阅读:

相关内容