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

Wab*_*son 58 unicode friendly-url diacritics internationalization

当用不同于英语的语言创建Web内容时,会出现搜索引擎优化和用户友好URL的问题.

我想知道在URL中使用去重音字母是否是最好的做法 - 冒着某些词语在有和没有某些口音的情况下有完全不同的含义 - 或者最好坚持使用非英语字符适当牺牲不太高级环境中这些URL的可读性(例如MSIE,查看源代码).

"异国情调"字母可以出现在任何地方:文档标题,标签,用户名等,因此它们并不总是受到网站维护者的全面监督.

当然,一种可能的方法是设置备用 - 非重音 - URL,这些URL指向原始目标,但我想了解您对使用重音URL作为主要文档标识符的看法.

Syn*_*hro 33

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

一个完全不同的问题是浏览器在显示URI时如何表示编码字符,例如某些浏览器将在URL中显示空格而不是'%20'.这就是IDN的工作原理:由编码器对编码和编码的惩罚字符串进行编码和解码,所以如果你访问café.com,你真的要访问xn--caf-dma.com.URL中的unicode字符实际上只是浏览器中的"视觉糖":如果您使用的浏览器不支持IDN或unicode,编码版本将无法工作,因为URL的基础定义只是不支持它,所以要使它一致地工作,你需要%编码.

  • 你读过我写的东西了吗?HTML可以包含非ASCII字符,浏览器可以从页面上下文中读取知道要使用的编码的那些字符,但它会向该字符串的URL编码版本发出请求,即URL本身不支持非ASCII字符. (6认同)

Bob*_*man 14

当遇到类似的问题时,我利用URL重写来允许这些页面可以被重音或非重音字符访问.实际的URL就像是

http://www.mysite.com/myresume.html
Run Code Online (Sandbox Code Playgroud)

并且重写+字符翻译功能允许此参考

http://www.mysite.com/myresumé.html
Run Code Online (Sandbox Code Playgroud)

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

  • 那么,考虑音译,`ṃỹṛèşưḿĕ`会在同一资源中描述?或者你有一个特定的映射? (7认同)
  • 这可能会产生重复内容问题.没有一个资源可以访问超过1个URI通常是个坏主意吗? (3认同)
  • @nathangiesbrecht - 是的,如果这是你关心的问题.在这种情况下,我会在页面上放置一个[规范标签](http://en.wikipedia.org/wiki/Canonical_link_element). (3认同)

Pas*_*TIN 10

考虑带有重音的网址往往看起来像这样:

http://fr.wikipedia.org/wiki/%C3%89l%C3%A9phant
Run Code Online (Sandbox Code Playgroud)

...这不是那么好......我想我们仍然会在一段时间内使用去重音的URL.

但是,事情应该变得更好,因为现在网页浏览器已经接受了带重音的URL.

我目前正在使用的Firefox 3.5以不错的方式显示URL,而不是%stuff,btw; 这似乎是自firefox 3.0以来的"新"(参见Firefox 3:位置栏中的UTF-8支持); 所以,IE 6中可能不支持,至少 - 并且仍然有太多人使用这个:-(


也许没有重音的网址看起来不是最好的; 但是,人们已经习惯了他们,而且似乎对他们的理解也很好.


ZZ *_*der 5

您应该避免用户手动在浏览器中输入的URL中的非ASCII字符.对服务器预编码的嵌入式链接没问题.

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

在Tomcat上处理URI中的字符编码