是否建议在URL中使用非ascii字符?

时间:2011-01-13 17:23:15

标签: language-agnostic url internationalization ascii url-encoding

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

编辑(响应Maxym的回答): 该网站将在特定国家/地区进行本地化,我无需担心全球公众访问此网站。据我所知,从可用性的角度来看,真的很烦人。与此相关的其他技术问题是什么?

4 个答案:

答案 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旁边,有一些符号是使用百分比编码编码的。有关它的更多信息可以在这里...

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

答案 3 :(得分:0)

你可以在网址中使用非ascii字符,但它很难看,因为spécialcaracters必须像这样编码: http://www.w3schools.com/tags/ref_urlencode.asp