我们目前正在开展I18N项目。我想知道在URL中使用非ascii字符有什么复杂性。如果不可取,有哪些替代方法可以解决这个问题?
编辑(响应Maxym的回答): 该网站将在特定国家/地区进行本地化,我无需担心全球公众访问此网站。据我所知,从可用性的角度来看,真的很烦人。与此相关的其他技术问题是什么?
答案 0 :(得分:3)
可以使用IDNA使用非ASCII /非拉丁语域名。此外,您始终可以在URL中使用百分比编码(如空格%20
)。 RFC 3986建议将UTF-8编码与百分比结合使用:
首先应将数据编码为 根据UTF-8的八位字节 字符编码;然后只有那些 与之对应的八位字节 未保留集中的字符 应该是百分比编码。 (...)为 例如,角色A将是 表示为“A”的角色 带有嫁妆的拉丁文大写字母 将表示为“%C3%80”,和 角色KATAKANA LETTER A会 表示为“%E3%82%A2”。
现代客户端(Web浏览器){%{3}}在百分比编码和Unicode之间来回转换,因此URL以ASCII格式传输,但对用户来说非常漂亮。
确保您使用的Web框架/ CMS也能理解此编码,以简化网站管理员/内容编辑者的网址输入。
答案 1 :(得分:2)
我会说不。原因很简单 - >如果你依赖全世界的公众,那么人们输入你的网址将是一个很大的问题。我生活在“西里尔”世界,有可能创建西里尔字母,但没有人成功,因为即使我们很懒惰改变语言并习惯键入拉丁语...
<强>更新强>
我不能说替代品,但有时一些语言有非正式或正式的字母替代品,例如用德语你可以写Ö但在网址中你可以看到OE。你也可以考虑英语单词或类似声音的单词(所以你们国家的人可以记住写作,其他“国家”也不会受到伤害
答案 2 :(得分:1)
取决于目标用户......例如,Nürnberg.de也会查看nuernberg.de,以便德国本土用户可以轻松访问(因为德语键盘是默认的,并且有4个额外的键符号( öäüß)可供所有德国人使用),不要忘记I18N的目标之一是为最终用户提供母语感受。 Mac和Linux用户有更多的主动方式,比如在Mac上点击Alt + u会在字符中引用变音符号以处理I18N的输入。
我只是想知道是什么 非ascii的并发症 网址中的字符。
但是你提出问题的方式,似乎你的问题更多地是URI, rather then URL ...并且你试图将URN与URI中的非ascii字符融合。如果您知道在服务器(for example: in case of Django based server, the URN can be parsed and handled using regex inside 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旁边,有一些符号是使用百分比编码编码的。有关它的更多信息可以在这里...
答案 3 :(得分:0)
你可以在网址中使用非ascii字符,但它很难看,因为spécialcaracters必须像这样编码: http://www.w3schools.com/tags/ref_urlencode.asp