我们目前正在进行一项I18N(国际化)项目。我想知道在URL中包含非ASCII字符会带来哪些复杂性问题。如果不建议这样做,有什么替代方案来解决这个问题呢?
编辑(回应Maxym的答案): 该网站将面向特定国家的用户,无需担心全球公众访问该站点。 我理解从可用性角度来看,这真的很烦人。还有哪些技术问题与此相关吗?
我们目前正在进行一项I18N(国际化)项目。我想知道在URL中包含非ASCII字符会带来哪些复杂性问题。如果不建议这样做,有什么替代方案来解决这个问题呢?
编辑(回应Maxym的答案): 该网站将面向特定国家的用户,无需担心全球公众访问该站点。 我理解从可用性角度来看,这真的很烦人。还有哪些技术问题与此相关吗?
%20
)。 RFC 3986 建议使用UTF-8编码与百分比结合使用:
现代客户端(Web浏览器)可以转换百分比编码和Unicode,因此URL作为ASCII传输,但对用户而言看起来很漂亮。首先应将数据编码为UTF-8字符编码的八位字节; 然后只有那些不对应未保留集中的字符的八位字节才应进行百分比编码。 (...) 例如,字符A将表示为“ A”,带重音的大写拉丁字母A将表示为“%C3%80”,片假名字母A将表示为“%E3%82%A2”。
但是,从你提出问题的方式来看,似乎你更关心的是 URI 而不是 URL……而且你正在尝试在 URI 中融合 URN 和非 ASCII 字符。如果你知道在服务器上如何解析和处理 URN(例如,在基于 Django 的服务器中,可以使用 url.py 中的正则表达式进行解析和处理),那么这里面就没有任何复杂之处。你需要记住的是,随着 Web2.0(基于 Ajax JavaScript 的)的发展,几乎所有东西都以 utf-8 运行,因为 JavaScript 规范要求 utf-8 编码。因此,utf-8 已经演变成了一种标准。坚持使用 utf-8 编码规范,你在 URI 解析和处理方面几乎不会遇到任何困难。我只是想知道在URL中使用非ASCII字符的复杂性是什么。
您可以在URL中使用非ASCII字符,但这样做会很丑,因为特殊字符必须像这样进行编码: http://www.w3schools.com/tags/ref_urlencode.asp