26

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

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

但是,它没有说明这些八位位组随后代表什么代码集。

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

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

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

是否有任何明确的方式可以让客户端确定使用哪个字符集来解释编码的八位位组,或者服务器可以确定客户端用来编码的内容?

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

4

2 回答 2

12

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

URI OTOH,允许更大的字符集;通常是您自己说的UTF-8。

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

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

于 2008-09-26T16:36:49.960 回答
4

我相信您正在寻找的规范是RFC 3987,它描述了 IRI - 国际化资源标识符。

于 2008-09-26T18:28:59.567 回答