Firefox:如何将带有括号作为编码字符的 URL 复制到剪贴板,例如将 '(' 复制为 '%28' 和 ')' 复制为 '%29'?

Firefox:如何将带有括号作为编码字符的 URL 复制到剪贴板,例如将 '(' 复制为 '%28' 和 ')' 复制为 '%29'?

我在 Fedora 38 上使用 Firefox 119.0(64 位)。我希望能够将包含括号的链接从地址栏复制到剪贴板,并对其进行编码。例如,复制 URL 时:

https://en.wikipedia.org/wiki/The_Martian_(film)

我希望将其复制到剪贴板:

https://en.wikipedia.org/wiki/The_Martian_%28film%29

主要是,我想要这个功能是因为 reddit 的 markdown 处理器太笨了,根本无法正确处理类似的 markdown [The Martian](https://en.wikipedia.org/wiki/The_Martian_(film)),而是会链接到https://en.wikipedia.org/wiki/The_Martian_(film(缺少右括号)并将额外的右括号显示为文本...尽管 superuser/stackexchange、lemmy 和 github 都设法正确处理这种情况而没有这个问题。

起初,我以为我可以使用browser.urlbar.decodeURLsOnCopy=false来实现这一点。但后来我发现这个值默认已经是 false(至少在 Fedora 上)。在进一步研究了这个问题之后,我认为它没有按照我希望的方式运行的原因是括号不被视为需要永远无法逃脱 - 我怀疑根据一些 W3C 规范,它encodeURIComponent会完全忽略这个字符。

抛开继续为 reddit 烦恼的智慧不谈...我的问题是:是否有其他方法可以实现将编码括号复制到剪贴板的目标,例如通过其他about:config属性或通过某些现有插件?或者这是一个失败的事业,我最好花时间在发帖之前编写一个用户脚本来修复 reddit 端的这种行为?

答案1

部分(?)答案:

$ 别名 | grep 网址
别名 urldecode='python3 -c "import sys; from urllib.parse import unquote; print(unquote(sys.argv[1]))"'
别名 urlencode='python3 -c "import sys; from urllib.parse import quote; print(quote(sys.argv[1]))"'

$ urlencode“https://en.wikipedia.org/wiki/The_Martian_(film)”
https%3A//en.wikipedia.org/wiki/The_Martian_%28film%29

...正如您所见,它用 替换了:%3A所以可能不是您想要的。


与此 bash 脚本结合:

$ cat $(哪个 clipb)
/bin/bash #!/bin/bash
#
# 用法:someapp | clipboard # 将 someapp 的输出导入剪贴板
# clipboard | someapp # 将剪贴板的内容导入到 someapp 中
#

如果命令 -v xclip 1>/dev/null; 那么
    如果 [[ -p /dev/stdin ]] ; 那么
        # stdin 是一个管道
        # 标准输入 -> 剪贴板
        xclip -i -选择剪贴板
    别的
        # stdin 不是管道
        # 剪贴板 -> 标准输出
        xclip -o -选择剪贴板
别的
    echo "记得安装 xclip"

适用于 Ubuntu 20.04,不保证适用于更新版本或其他版本

相关内容