URL 中的 Unicode 字符

新手上路,请多包涵

在 2010 年,您会在大型门户网站中提供包含 UTF-8 字符的 URL 吗?

根据 URL 上的 RFC,Unicode 字符是被禁止的(参见 此处)。它们必须经过百分比编码才能符合标准。

不过,我的主要观点是提供未编码的字符,其唯一目的是拥有漂亮的 URL,因此百分比编码已经过时了。

无论 RFC 怎么说,所有主要浏览器似乎都可以正常解析这些 URL。不过,我的总体印象是,当离开网络浏览器域时,它会变得非常不稳定:

  • URL 被复制粘贴到文本文件、电子邮件,甚至是具有不同编码的网站
  • HTTP 客户端库
  • 奇特的浏览器,RSS 阅读器

我的印象是正确的,这里会遇到麻烦,因此如果您服务的是非技术受众,那么这不是一个实用的解决方案(目前),即使引用和传递,您的所有链接也能正常工作很重要吗?

是否有一些神奇的方法可以在 HTML 中提供漂亮的 URL

 http://www.example.com/düsseldorf?neighbourhood=Lörick

可以原封不动地复制+粘贴特殊字符,但在旧客户端中重新使用时可以正常工作吗?

原文由 Pekka 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 751
2 个回答

使用百分比编码。现代浏览器将处理显示和粘贴问题并使其易于阅读。例如 http://ko.wikipedia.org/wiki/위키백과:대문

编辑: 当你在 Firefox 中复制这样的 url 时,剪贴板将保留百分比编码形式(这通常是一件好事),但如果你只复制其中的一部分,它将保持未编码状态。

原文由 Tgr 发布,翻译遵循 CC BY-SA 2.5 许可协议

Tgr 说的。背景:

 http://www.example.com/düsseldorf?neighbourhood=Lörick

那不是 URI。但它 一个 IRI

您不能在 HTML4 文档中包含 IRI;像 href 这样的属性类型被定义为 URI 而不是 IRI。有些浏览器无论如何都会在这里处理 IRI,但这并不是一个好主意。

要将 IRI 编码为 URI,请获取路径和查询部分,对它们进行 UTF-8 编码,然后对非 ASCII 字节进行百分号编码:

 http://www.example.com/d%C3%BCsseldorf?neighbourhood=L%C3%B6rick

如果 IRI 的主机名部分有非 ASCII 字符,例如。 http://例え.テスト/ ,它们已使用 Punycode 编码。

现在你有了一个 URI。这是一个丑陋的 URI。但大多数浏览器会为您隐藏它:将其复制并粘贴到地址栏或在链接中跟随它,您会看到它显示为原始 Unicode 字符。维基百科多年来一直在使用它,例如:

 http://en.wikipedia.org/wiki/ɸ

一个行为不可预测并且并不总是显示漂亮的 IRI 版本的浏览器是……

……好吧,你知道的。

原文由 bobince 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题