从浏览器的地址栏中复制一个 UTF-8 URL,只给出丑陋的编码

Posted

技术标签:

【中文标题】从浏览器的地址栏中复制一个 UTF-8 URL,只给出丑陋的编码【英文标题】:Copying a UTF-8 URL from browser's address bar, gives only the ugly encoded one 【发布时间】:2013-08-13 03:42:59 【问题描述】:

当我从浏览器的地址栏(几乎任何操作系统上的任何浏览器)复制 UTF-8 URL,然后尝试将其粘贴到另一个文本字段中(例如,将其发布到 facebook 或 twitter 上)时,它只给出解码后的 URL,这使它很难看。例如,在地址栏中,URL 显示如下:

https://www.chaino.com/وذكر

但是当试图将其复制并粘贴到任何其他地方时,它会给出以下丑陋的 url:

https://www.chaino.com/%D9%88%D8%B0%D9%83%D8%B1

&如果我想获取原始URL在任何地方使用它,我曾经在这个Raw URL Decoder - Online Tool中解码它

问题是: 有没有一种简单的直接方法可以复制这些 URL,并在没有这个可怕的过程的情况下粘贴它? (可能正在使用 chrome 扩展什么的)

【问题讨论】:

另一个很好的解决方案见superuser.com/questions/480692/…。 @HansGinzel 看起来很有希望,问题是该问题仅与 Firefox 相关,而这里的一些答案更通用,谢谢 【参考方案1】:

你可以在地址栏的网址末尾加“空格”,然后全选直接复制即可。

【讨论】:

由于某些奇怪的原因在 Chrome 61 上它仅适用于 https 网站,但不适用于 http 在 Chrome 66 中,他们显然改变了它。它停止工作:( 适用于 Firefox 65.0.2。 适用于 Firefox 82.0.2 64 Opera 网页浏览器没有这个问题,虽然它是基于 Chromium 的【参考方案2】:

您可以选择 URL 而不选择方案(例如 http://),然后复制它。这将为您提供您所期望的。

附:关键是只选择链接的一部分。例如。您可以选择不带第一个字符的整个 URL,然后手动添加。

【讨论】:

我不知道它可以工作:),只是一个问题,通常http://不可见,所以如果域不以子域开头(即www.)就像问题中的示例一样,那么我将无法仅复制其中的一部分,是否有解决方法? 复制除第一个字符以外的所有内容,然后手动添加。 太好了,感谢分享这个:),但您能否在答案本身中反映这一点,以便为其他人提供完整的答案 哇。惊人的。为我节省了大量复制 url 和解码它们的时间。【参考方案3】:

在 Firefox 53+ 中,您可以将 browser.urlbar.decodeURLsOnCopy about:config option 设置为 true

【讨论】:

哇,Firefox 可以做到这一点! :) .. 如果它不是仅 Firefox 的答案,我现在会接受它.. 我知道它有时看起来很冒险,但选项本身看起来很棒,谢谢。 嗯,这不是对主要问题的完整答案,不仅仅是关于 Firefox。此外,遗憾的是,android 上的 Firefox 没有此功能,它仅适用于桌面:android.stackexchange.com/q/224951/17612【参考方案4】:

您通过从地址栏复制获得的 URI 是浏览器可以提供给您的唯一有效 URI。

来自 RFC 3986(和其他 URL RFC):

URI 是一组非常有限的字符序列: 基本拉丁字母、数字和一些特殊的字母 字符。

所以:https://www.chaino.com/وذكر 是无效的 URI,但也是有效的 IRI(国际资源标识符),您的浏览器将在通过 HTTP 请求服务器时将其转换为有效的 URI(HTTP 不允许 IRI,只有 URI)。

TL;DR:您的浏览器正在为您提供您所期望的:您可以在任何地方使用的有效 URI,而不是仅在此处和此处支持的 IRI。

PS 如果“例如 facebook 或 twitter”是善良的,他们可能会向用户显示可读的表单,所以不用担心提供编码的表单。

【讨论】:

您在这里谈论的主要是命名,但我只是想要一种易于与他人共享的 URL 的可读形式,并且我在回答中使用的 chrome 扩展名正是我想要的 他不是在谈论命名,而是在谈论标准,这是一个巨大的差异。即使答案不能解决提问者的问题,它仍然包含关键信息,我很高兴它在这里。尽管如此,大多数人使用浏览器来处理链接,而且对于大多数浏览器来说,IRI 和 URI 在功能上是相同的,我想。【参考方案5】:

您可以使用以下 Chrome 扩展程序:

https://chrome.google.com/webstore/detail/copy-unicode-urls/fnbbfiapefhkicjhecnoepbijhanpkjp

https://chrome.google.com/webstore/detail/copy-cyrilic-urls/alnknpnpinldhpkjkgobkalmoaeolhnf

【讨论】:

2020 年 5 月 20 日 - 它适用于最新的 chrome。谢谢伊利亚 @ronnefeldt,请您删除/隐藏/编辑此答案,因为其中的链接不再起作用并返回 404。 @ronnefeldt,请您不要使用指向“复制 Unicode URL”的直接链接,而是将其更改为指向我在此线程下面的答案的链接。我很高兴为我创建的扩展获得一些支持。这对我来说不是很重要,我只是喜欢投票。谢谢。【参考方案6】:

我现在发现的最佳答案是使用这个 Chrome 扩展程序: https://chrome.google.com/webstore/detail/copy-cyrilic-urls/alnknpnpinldhpkjkgobkalmoaeolhnf?hl=en-US

这使我只需单击一下即可复制网址(处于解码状态):)

【讨论】:

“处于解码状态的 URL”不存在,请参阅我的回复。但你仍然可以称它们为 IRI,而不是 URL。 关于命名,这对我来说并不重要,我只想要可读形式的 URL,这里的 Chrome 扩展对我来说做得很好:) 如果您不想要另一个扩展,请参阅我的回答。【参考方案7】:

使用此网址创建书签:javascript:console.log(prompt('copy (Control+C) this link:', decodeURIComponent(window.location)))

在该页面上单击此书签。

【讨论】:

【参考方案8】:

您可以使用我创建的Chrome extension called "Copy Unicode URLs"。 它是:

    Open source。 为您提供保留 URL 终止符编码的选项,例如,以点结尾的链接将对该点进行编码,并且电子邮件客户端不会错误地将这个点识别为句子/URL 终止符。

如果你喜欢我的工作,请捐一些钱here。

【讨论】:

【参考方案9】:

在http中复制不带'h'的地址... 过去的地址不带'h',并把第一个地址和'h'相加

【讨论】:

请添加更多详细信息以扩展您的答案,例如工作代码或文档引用。

以上是关于从浏览器的地址栏中复制一个 UTF-8 URL,只给出丑陋的编码的主要内容,如果未能解决你的问题,请参考以下文章

从浏览器地址栏中复制 URL 并使用 html 粘贴到表单中?

如何获取地址栏中的url

从 Google Chrome 的地址栏中获取文本(不是 url)

如何在状态栏中隐藏 url 地址? [复制]

使用 jQuery 从 URL 中获取字符串的一部分? [复制]

在浏览器的地址栏中输入url后发生了什么