11

我们目前正在开展 I18N 项目。我想知道在 URL 中使用非 ascii 字符有什么复杂性。如果不建议这样做,有什么替代方法可以解决这个问题?

编辑(响应 Maxym 的回答):该站点将是特定国家/地区的本地站点,我不必担心全世界的公众访问该站点。我知道从可用性的角度来看,这真的很烦人。与此相关的其他技术问题是什么?

4

4 回答 4

7

可以使用IDNA使用非 ASCII/非拉丁域名。此外,您始终可以%20在 URL 中使用百分比编码(如空格)。RFC 3986推荐 UTF-8 编码结合百分比:

数据应首先根据 UTF-8 字符编码编码为八位字节;那么只有那些与未保留集中的字符不对应的八位字节应该进行百分比编码。(...) 例如,字符 A 将表示为“A”,字符 LATIN CAPITAL LETTER A WITH GRAVE 将表示为“%C3%80”,字符 KATAKANA LETTER A 将表示为“% E3%82%A2"。

现代客户端(Web 浏览器)能够在百分比编码和 Unicode 之间来回转换,因此 URL 以 ASCII 格式传输,但对用户来说看起来很漂亮。

确保您使用的网络框架/CMS 也能理解这种编码,以简化来自网站管理员/内容编辑器的 URL 输入。

于 2011-01-13T17:47:06.507 回答
4

我会说不。原因很简单 -> 如果您依赖全球公众,那么人们输入您的网址将是一个大问题。我生活在“西里尔文”世界中,可以创建西里尔文网址,但没有人成功,因为即使我们也很懒惰改变语言并习惯于输入拉丁文......

更新:
我不能说替代方案,但有时某些语言有非正式或正式的字母替代,例如在德语中你可以写 Ö 但在 url 你可以看到 OE 代替。您也可以考虑英语单词或发音相似的单词(因此您所在国家/地区的人可以记住该文字,并且其他“国家/地区”不会造成伤害

于 2011-01-13T17:35:01.350 回答
2

取决于目标用户...例如 Nürnberg.de 还查看nuernberg.de以使其易于被本地德语用户访问(因为德语键盘是默认的,并且所有 4 个额外的键符号 (öäüß) 可供所有人使用讲德语的人),不要忘记 I18N 的目标之一是为最终用户提供母语感觉。Mac 和 Linux 用户有更主动的方式,比如在 Mac 上点击 Alt+u 会诱导字符中的变音符号来处理 I18N 输入。

我只是想知道在 URL 中使用非 ascii 字符有什么复杂性。

但是你提出问题的方式,似乎你的问题更多的是关于URI,而不是 URL ......并且你试图将 URN 与 URI 中的非 ascii 字符融合在一起。如果您知道在哪里以及如何在服务器上解析您的 URN(例如:在基于 Django 的服务器的情况下,可以使用 url.py 中的正则表达式解析和处理 URN),那么其中没有任何复杂性。所有您需要的要记住的是,随着 web2.0(基于 Ajax javascript)的发展,一切都主要以 utf-8 运行,因为 Javascript 规范需要 utf-8 编码。因此 utf-8 已经演变成一种标准。坚持使用 utf-8 编码规范,您几乎不会在 URI 解析和解决它时遇到任何复杂问题。

例如。检查 URI http://de.wikipedia.org/wiki /Fürth 或http://hi.wikipedia.org/wiki /जर्मनी .. 无论您在地址栏中编写的编码如何,浏览器都会将其转换为 UTF-8 ,并将其发送到服务器。

注意:除了 UTF-8,还有一些使用百分比编码的符号。更多关于它的信息可以在这里找到...

http://en.wikipedia.org/wiki/Percent-encoding

于 2011-01-13T17:53:26.333 回答
1

您可以在 url 中使用非 ascii 字符,但这很难看,因为特殊字符必须像这样编码: http ://www.w3schools.com/tags/ref_urlencode.asp

于 2011-01-13T17:46:53.640 回答