URL 中 unicode 字符的使用

问题描述 投票:0回答:2

这个问题的基础来自这样一个事实:在许多拉丁语言以及许多非拉丁语言中,据我所知,直到最近,有些字母在 URL 中还不能真正使用,并且几乎总是最终生成一大堆 URL 编码字符。

但是,最近我看到几个网站在 URL 中使用本地字母(域名除外)。

类似这样的东西,例如使用西班牙重音字母:

https://www.example.com/esta-es-una-frase-en-español
https://www.example.com/cómo-usar-acentos-y-la-letra-ñ-en-urls

另外,我见过类似的网址

https://www.example.com/урл-на-български

根据我的经验,不久前人们必须将重音字符编码或转换为非重音字符。

但是现在您可以在浏览器中使用这种类型的 URL,并且不会出现任何问题,并且字母会按其应有的方式显示(未进行 URL 编码)。

可以安全地假设现在我的 URL 可以处理这些字符吗?

另外,Google 的 URL 索引方面有什么区别吗?

url unicode compatibility non-ascii-characters
2个回答
2
投票

URI/URL,如 RFC 3986“统一资源标识符 (URI):通用语法” 所定义,不允许使用 未编码 非 ASCII 字符。此类字符必须进行字符集编码(通常为 UTF-8),然后对生成的字节八位字节进行百分比编码。如果给浏览器提供的 URL 中包含未编码的 Unicode 字符,则浏览器在将其传输到 Web 服务器时通常会在幕后对其进行正确的 url 编码。您可以使用浏览器的内置调试器(如果有)或 HTTP/S 嗅探器来验证这一点。

IRIs,由 RFC 3987“国际化资源标识符 (IRI)” 定义,允许 未编码 Unicode 字符。 IRI 尚未广泛使用,但是 IRI 可以通过映射到编码的 URI/URL 或从编码的 URI/URL 映射来保持向后兼容性。您的浏览器可能会将地址栏的内容视为 IRI,根据需要在内部将其与 URI/URL 相互转换。


0
投票

Google 所说的(参考):

建议:根据需要使用 UTF-8 编码。

并且:

不建议:在 URL 中使用非 ASCII 字符

Google 希望您对锚点中的 URL 进行编码,但您可以自由地使用锚点的标题。

正如您提到的维基百科,锚点中的所有 URL 实际上都经过编码,但浏览器及其服务器当然会处理编码的 URL。附上维基百科的例子:

© www.soinside.com 2019 - 2024. All rights reserved.