我应该在url中使用重音字符吗?

当用英语以外的语言创build网页内容时,出现search引擎优化和用户友好的URL问题。

我想知道在URL中使用去重音字母是否是最好的做法 – 冒着某些词有完全不同的含义,有或没有某种口音 – 或者最好坚持使用非英文字符适当的牺牲在较不高级的环境(如MSIE,查看源)这些url的可读性。

“异国情调”的字母可以出现在任何地方:文件标题,标签,用户名等,所以他们并不总是在网站维护者的全面监督下。

当然,一个可能的方法是设置不同的URL,以指向最初的目的地,但是我想了解一下使用重音URL作为文档标识符的意见。

当遇到类似的问题时,我利用URL重写来允许重音或不重音的字符访问这些页面。 实际的URL会是这样的

http://www.mysite.com/myresume.html 

而重写+字符翻译function允许这个参考

 http://www.mysite.com/myresumé.html 

加载相同的资源。 所以要回答你的问题,作为主要的资源标识符,我把自己局限于0-9,AZ,az和偶尔的连字符。

这里没有歧义: RFC3986说不 ,即URI不能包含unicode字符,只能是ASCII。

一个完全不同的问题是浏览器在显示URI时如何表示编码字符,例如,某些浏览器将在URL中显示空格而不是“%20”。 IDN也是这样工作的:punycodedstring在浏览器上进行编码和解码,所以如果你访问café.com,你真的访问了xn--caf-dma.com。 在URL中看起来像unicode字符实际上只是浏览器上的“可视化糖”:如果您使用的浏览器不支持IDN或unicode,则编码版本将无法工作,因为URL的基础定义不支持它,所以为了一致地工作,你需要%编码。

考虑到带有口音的URL往往最终会看起来像这样:

 http://fr.wikipedia.org/wiki/%C3%89l%C3%A9phant 

…这不是很好…我认为我们仍然会使用一段时间去重音的URL。

虽然,事情应该会好起来,因为重音的URL现在被网页浏览器所接受。

我正在使用的Firefox 3.5显示URL的好方法,而不是与%的东西,顺便说一句; 这自Firefox 3.0以来似乎是“新的”(见Firefox 3:UTF-8支持位置栏 ); 所以,至less在IE 6中可能不支持 – 而且还有相当多的人使用这个:-(

也许URL没有口音是不是看起来可能是最好的; 但是,人们对他们习以为常,似乎对他们的了解也相当普遍。

您应避免可能由用户手动在浏览器中input的URL中的非ASCII字符。 由服务器预先编码的embedded式链接可以。

我们发现浏览器可以用不同的方式对URL进行编码,很难弄清楚它使用的是什么编码。 看到我在这个问题上的问题,

处理Tomcat中URI的字符编码

完整url中有几个区域,每个区域可能有不同的规则。 协议是纯ASCII。 DNS条目由IDN(国际域名)规则pipe理,并且可以包含(大部分)Unicode字符。 path(在第一个/之后),用户名和密码可以再次成为一切。 他们被转义(如%XX),但这些只是字节。 什么是这些字节的编码很难知道(由http服务器解释)。 参数部分(在第一个之后?)按照原样(在%XX unescapeing之后)传递给某个服务器端应用程序事物(php,asp,jsp,cgi),以及如何解释这些字节是另一回事。 build议path/用户/密码/参数是UTF-8,但不是强制性的,并不是每个人都尊重这一点。

所以你绝对应该允许使用非ASCII(我们现在还没有上个世纪80年代),但是你用这个做什么可能会很棘手。 尝试使用Unicode,并远离遗留代码页,如果可以的话,使用正确的编码/字符集标记您的内容(在html中使用meta,在asp / jsp中使用语言指令等)