浏览器支持 URL 中的 UTF8 编码字符

Posted

技术标签:

【中文标题】浏览器支持 URL 中的 UTF8 编码字符【英文标题】:Browser Support for UTF8 Encoded Characters in URL's 【发布时间】:2015-07-11 08:48:28 【问题描述】:

如果我使用特殊的 UTF8 编码字符导航到以下 URL,我会在 Web 浏览器中得到不同的结果:

http://example.com/lörickè

Firefox 37 - 显示正确的 URL,如上。 Chrome 42 - 显示正确的 URL,如上。 Edge - 显示正确的 URL,如上。 IE 11 - 显示百分比编码的 URL http://example.com/l%c3%b6rick%c3%a8/

我在哪里可以找到支持此功能的浏览器和版本列表,是否有任何关于新 Microsoft Edge 浏览器是否支持此功能的公告。

This *** 帖子为感兴趣的人重点介绍了上述问题。

【问题讨论】:

【参考方案1】:

浏览器地址栏中显示的不一定是内部使用的。

如果您在 Firefox 中输入 http://example.com/lörickè,它会像这样显示,但它实际上会被百分比编码并变成 http://example.com/l%C3%B6rick%C3%A8。这是出于可用性原因(或者,如果不支持 IRI,例如在 HTTP/1.1 中,将 IRI 转换为 URI),因此用户不必输入正确的 URL(使用百分比编码),并且不要不要被这些神秘的部分弄糊涂了。

您可以轻松查看copy-pasting the URL from the address bar into a text document 真正使用的内容。

因此,您示例中的三个浏览器可能使用相同的 URI(即百分比编码),但两个浏览器决定改为显示未编码的变体。

【讨论】:

这正是发生的事情。不保证向用户显示的内容是实际传输到服务器或用于内部跟踪(缓存、收藏夹、历史等)。 有没有办法根据用户代理字符串猜测浏览器是否支持?潜在地为他们提供带有完全重音字符的 URL,但不提供给会显示百分比的浏览器。

以上是关于浏览器支持 URL 中的 UTF8 编码字符的主要内容,如果未能解决你的问题,请参考以下文章

常见编码格式

带有 UTF8 字符的友好 URL

utf-8和base64啥区别啊?

url参数中带有中文时出现字符乱码

phpstorm设置了utf8编码浏览器打开乱码。数据库,phpstorm设置的都是utf8。如

Http请求url参数字符集