HTTP URI可以有非ASCII字符吗?

时间:2010-03-24 00:14:42

标签: http unicode isapi rfc3986

我试图在相关的RFC IETF RFC 3986中找到它,但无法理解。

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

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

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


附录

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

6 个答案:

答案 0 :(得分:6)

答案 1 :(得分:4)

以下是一个例子:☃.net。

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

编辑:

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

答案 2 :(得分:4)

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

答案 3 :(得分:0)

曾经是DNS和URL / URI中不允许使用非英文字符。有一个hack允许他们在URI中使用%编码。然而,像俄罗斯和中国这样的许多国家开始使用非拉丁字符实施DNS。以下是对其中一个standards

的引用

答案 4 :(得分:0)

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

答案 5 :(得分:-1)

许多浏览器都不支持带有Unicode字符的URI(我在我建立的网站上实现了这些 - blogvani.com),谷歌正式扫描并保持原样。我认为这不适用于顶级域名,但至少不适用于注册商而非直接域名。

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

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