代码之家  ›  专栏  ›  技术社区  ›  Thomas Vander Stichele

我应该假设URL中的编码字符属于哪个字符集?

url
  •  27
  • Thomas Vander Stichele  · 技术社区  · 17 年前

    RFC 1738 指定URL的语法,并提到

    URL仅使用图形编写 可打印字符
    US-ASCII编码字符集。这个 八位字节80-FF十六进制不是
    用于US-ASCII,八位字节00-1F 7F十六进制表示
    控制字符;这些必须是 编码。

    然而,它并没有说明这些八位字节代表什么代码集。

    RFC 2396 似乎试图改善这种情况,但是:

    对于原始字符序列 包含非ASCII字符,但情况更为复杂 困难。传输八位字节序列的互联网协议,旨在 表示字符序列有望提供某种方式 如果可能有多个字符集,请标识使用的字符集 [RFC2277]。然而,目前没有规定 通用URI语法来完成此识别。单个URI 方案可能需要单个字符集,定义默认字符集,或 提供一种方法来指示所使用的字符集。

    预计将对URI中的字符编码进行系统处理 作为本规范的未来修改而开发。

    是否有任何明确的方法,客户端可以确定在哪个字符集中解释编码的八位字节,或者服务器可以确定客户端使用什么进行编码?

    在我看来,大多数服务器默认使用UTF-8,但这似乎是一个事实上的选择,而不是一个指定的选择。

    2 回复  |  直到 17 年前
        1
  •  12
  •   pergy Javier    7 年前

    根据您的报价,URL是ASCII。这就是全部。

    URI OTOH允许更大的字符集;通常是UTF-8,就像你自己说的那样。

    要记住的一点是,URL是URI的一个子集。因此,真正的问题是,你在浏览器中写的是哪一个?

    我想你可以写一个URI,浏览器应该尽力转换为URL(这就是HTTP/1.1支持的AFAICR)。对于非ASCII字符,这意味着六进制码,通常编码UTF-8。

        2
  •  4
  •   Community Mohan Dere    4 年前

    我相信你要找的规格是 RFC 3987 ,它描述了IRI——国际化资源标识符。

    推荐文章