【问题标题】:How to properly unescape non-ASCII cahracters in location.pathname如何正确转义 location.pathname 中的非 ASCII 字符
【发布时间】:2026-01-01 01:40:01
【问题描述】:

我在浏览器地址栏中有如下网址:

example.com/search/city/Germany:巴登-符腾堡

我尝试从控制台获取 URL 的路径名:

location.pathname 返回:

/search/city/Germany:巴登-W%C3%BCrttemberg

我看到 ü 字符已被转换(转义)为 %C3%BC 序列。 我想在 HTML 文档中不显示这个字符,因此我尝试不转义它:

unescape(location.pathname) 但不幸的是,我得到的不是来自 URL 的字符串 > '/search/city/Germany:巴登-符腾堡'

如何通过 Javascript 获取 URL 字符 ü(来自我的 URL example.com/search/city/Germany:Baden-Württemberg)?

谢谢!

【问题讨论】:

  • 使用decodeURI()
  • @Cid 谢谢!它有效!
  • 顺便说一下,来自unescape()的文档:“注意:不要使用unescape来解码URI,而是使用decodeURI。”。有时(总是)阅读文档会有所帮助
  • 如果我知道答案就在那里,我会阅读的。 window 是相当大的 API。你知道边做边学通常是有效的方法。一般来说,您是对的,但截止日期不会影响 encopas API 文档的阅读时间。
  • 我投票结束了这个问题,因为您表示您在没有收到任何答案的情况下解决了问题。如果您仍然需要答案,请edit问题以表明问题尚未完全解决。如果您找到的解决方案对其他人有用,请按“回答您的问题”按钮回答您自己的问题。

标签: javascript url


【解决方案1】:

@Cid 指出的解决方案

使用 decodeURI()

在这种情况下比 unescape 工作得更好,这似乎不是此类翻译的首选功能。

来自developer.mozilla.org

通常,decodeURI 或 decodeURIComponent 优于 unescape。

同样,此答案的所有学分都归于@Cid,以获取他在原始问题上的 cmets。

【讨论】: