为什么从地址栏复制非英语 URL 时,它是经过编码的 URL,而不是我看到的文本(解码)?

为什么从地址栏复制非英语 URL 时,它是经过编码的 URL,而不是我看到的文本(解码)?

当我从地址栏复制一个通常需要编码的字符的链接时,复制的链接将包含编码的文本而不是解码的文本(这是视觉上看到的)。

但是如果我编辑(并恢复)URL 中的某些内容,例如添加空格并将其删除 - 则复制的文本将被解码。

为什么会出现这种行为?背后有什么原因吗,还是任意的?

注意:据我检查,这是 Chrome 和 Firefox 上的行为,但不是 Edge(它将复制解码的文本)。

有没有办法改变行为并始终复制(好的)解码的 URL?
(至少对于 Chrome 来说)


例子:

浏览这个地址将显示https://he.wikipedia.org/wiki/עוגייה在地址栏中,但复制时将复制https://he.wikipedia.org/wiki/%D7%A2%D7%95%D7%92%D7%99%D7%99%D7%94
复制前编辑某些内容将改变此行为。

在此处输入图片描述

答案1

URL 编码格式是应用程序在网络上通信时实际使用的形式。默认情况下,它以这种方式从 Firefox/Chrome 复制,以尽可能保证复制的 URL 的可用性。

URL 在编辑时“改变”的原因几乎肯定是因为浏览器检测到了 URL 字符串中的差异,可能需要再次进行编码。

有没有办法改变行为并始终复制(好的)解码的 URL(至少对于 Chrome 而言)?

火狐

这个超级用户问题有一个答案指出,您可以在 Firefox 53+ 中将 的值设置browser.urlbar.decodeURLsOnCopyTrueunder about:config,以自动复制 URL 的非 URL 编码形式。这对我来说很有效,尽管我没有在最新版本的 Firefox 上测试它。

铬合金

2019 年 12 月更新

我没有找到 Chrome 的任何内部设置,但我找到了堆栈溢出Chrome 扩展程序名为复制 Unicode URL(本次更新时最后更新时间为 2019 年 1 月)似乎复制了您的示例 URL,但没有进行编码,正如广告所说的那样。

关于此扩展的一个小警告,虽然嵌入在页面中的链接Copy unicode URL在右键菜单中有一个选项,但必须通过左键单击位于多功能框右侧(靠近设置菜单)的“复制 Unicode URL”扩展图标来复制“地址栏”URL。


如果你使用的是 Windows,可能还值得注意的是,你可以将一组 URL 编码的 URL 粘贴到记事本++,选择编辑 → 全选(Ctrl+ A),然后(假设您有可用的默认插件)使用插件 → MIME 工具 → URL 解码一次解码所有 URL。


答案2

这是网络浏览器特意实现的、非常有用的功能:

  • 在发出复制整个 URL 的命令后,Web 浏览器会将其编码为特定格式。只需单击地址栏即可完成此操作。提示是选择了整个地址栏。
  • 如果您首先选择 URL 的一部分(即使最后选择了全部),Web 浏览器只会复制您看到的内容。只需单击一下,然后再单击一次(或双击),然后选择所需的内容即可。

还有一个您可能没有意识到的部分:当输入时https://he.wikipedia.org/wiki/עוגייה,网络浏览器会https://he.wikipedia.org/wiki/%D7%A2%D7%95%D7%92%D7%99%D7%99%D7%94在后台将其转换为,然后才将其传输到网上。

这一切都是有原因的。我就不多说细节了,只告诉你一个底线:编码后的 URL 才是真正的 URL。正如你所说,“好”的 URL 只是为了简化你的生活。因此,后者可能无法在所有支持 Web 的应用程序中工作,而前者则保证可以工作。

附录:您甚至可能无法通过电子邮件、即时消息或短信正确发送“好”的 URL!这实际上取决于您使用的服务和收件人使用的服务是否支持 Unicode。(Gmail、Hotmail、Skype 和 Telegram 都可以。我不确定 Sprint、Verizon 或 AT&T 的短信服务是否支持。)

答案3

您可以使用类似https://chrome.google.com/webstore/detail/copy-unicode-urls/fnbbfiapefhkicjhecnoepbijhanpkjp它允许您复制 URL 而无需编码。

相关内容