url - url 可以有 UTF-8 字符吗?

标签 url utf-8 character-encoding ascii url-encoding

我很好奇我是否应该使用 ASCII 或 UTF-8 对 url 进行编码。我认为 url 不能有非 ASCII 字符,但有人告诉我他们可以有 UTF-8,我四处搜索,找不到哪个是真的。有人知道吗?

最佳答案

这有两个部分,但它们都等于"is"。

IDNA ,可以使用完整的 Unicode 轨道注册域名(稍作改动以防止歧义和滥用)。

路径部分没有严格规定,但可以在路径中编码任意字符串。浏览器可以选择显示人类可读的渲染而不是编码路径。但是,这需要启发式方法,因为无法指定路径的字符集和编码。

所以,http://xn--msic-0ra.example/mot%C3%B6rhead是一个(虚构的例子,不完全正确)计算机可读的编码 URL,可以向用户显示为 http://müsic.example/motörhead .域名编码为xn--msic-0ra.example在一个叫做 Punycode 的东西中,并且路径包含编码为 UTF-8 和 URL 编码的标签“motörhead”(Unicode 代码点 U+00F6 在 UTF-8 中用两个字节 0xC3 0xB6 表示)。

路径也可以是 mot%F6rhead这与 Latin-1 中的标签相同。在这种情况下,推断出合理的人类可读表示会困难得多,但也许周围字符的上下文可以提供足够的提示来进行良好的猜测。

单独来看,%F6几乎可以是任何东西,%C3%B6可以是例如UTF-16。

关于url - url 可以有 UTF-8 字符吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22357509/

相关文章:

Java HttpServletRequest 在浏览器 URL 栏中获取 URL

javascript - 尝试使 IRC 机器人的 URL-Matching RegEx 更快

c++ - 如何遍历字符串中的所有 utf-8 代码点

encoding - 字符编码的最佳资源

php - 如何在 PHP 中应用 URL 规范化规则?

java - 如何检测URL是否有文件?

postgresql - 识别隐藏的非 UTF8 编码字符

r - 以编程方式指定 unicode 字符 R

jsf-2 - JSF 中的 UTF-8 表单提交会损坏数据

perl 输出 - 无法正确打印 utf8 文本文件