19

我试图在相关的 RFC,IETF RFC 3986中找到它,但无法弄清楚。

HTTP 的 URI 是否允许 Unicode 或任何类型的非 ASCII?

您能否引用支持您的答案的部分和 RFC。

注意:对于那些可能认为这与编程无关的人来说——确实如此。它与我正在构建的 ISAPI 过滤器有关。


附录

我已经阅读了 RFC 3986 的第 2.5 节。但我认为是当前 HTTP 协议的 RFC 2616 早于 3986,因此我认为它不能与 3986 兼容。此外,即使或当 HTTP RFC已更新,仍然存在合理化问题 - 换句话说,HTTP URI 是否支持所有 RFC3986 附带条件,包括适合包含非 US-ASCII 字符的任何内容?

4

6 回答 6

6

http://en.wikipedia.org/wiki/Internationalized_domain_name

于 2010-03-24T00:20:45.547 回答
4

这是一个例子:☃.net。

就 RFC 3986 的相关部分而言,我认为您正在查看2.5

编辑:

显然堆栈溢出不会将其检测为正确的 URL。您必须复制并粘贴到浏览器中。

于 2010-03-24T00:17:16.863 回答
4

不,他们是不允许的。只需检查 RFC 3986 中的 ABNF。

于 2010-03-24T05:49:31.740 回答
0

过去是在 DNS 和 URL/URI 中不允许使用非英文字符。有一个黑客可以通过在 URI 中使用 % 编码来允许它们。然而,美国和中国等许多国家开始使用非拉丁字符实施 DNS。这是对这些标准之一的参考

于 2010-03-24T00:20:42.313 回答
0

RFC 3986 正在被 RFC 3987 取代,后者完全支持 Unicode,并提供与 RFC 3986 样式 URI 之间的映射规则。

于 2010-03-24T09:59:59.860 回答
-1

许多浏览器不支持带有 Unicode 字符的 URI(我已经在我建立的名为 blogvani.com 的网站上实现了它们)并且 Google 会适当地扫描并保持它们完好无损。不过,我认为这不适用于顶级域,至少不适用于注册商,也不能直接使用。

对于顶级域,如果您有一个以 Unicode 注册的域(例如人们可以用印地语注册域),它将被转换为相应的 ASCII 代码(可能类似于 jdhfks3243-32434.com)...

看到它是如何路由的并意识到你实际上并没有进入一个 unicode 域,即使看起来像那样,这很有趣。

于 2010-03-24T00:34:17.517 回答