web-dev-qa-db-ja.com

分音記号文字を含むURLを処理する方法

diacriticáǚ´...)を含む文字列に対応するURLsをどのように処理するのか疑問に思っています。私たちが主に見ているのは、URLsであり、発音区別符号文字が最も近い同等のASCIIに変換され、たとえばRånades på Skyttis i Ö-vikranades-pa-skyttis-i-o-vikに変換されていると思います。

ただし、対応する言語によっては、このような変換が正しくない場合があります。たとえば、Germanの場合、ü文字列をBayern Münchenとして表す以下のueで見られるように、uではなく、bayern-muenchenURLに変換する必要があります。

http://www.bundesliga.de/en/liga/clubs/fc-bayern-muenchen/index.php

しかし、私が気づいたのは、ブラウザがASCIIpercent-encoded の場合に非URL文字をレンダリングできることです。これは、Wikipediaが選択したアプローチです。たとえば、http://de.wikipedia.org/wiki/FC_Bayern_M%C3%BCnchen次のようにレンダリングされます。

enter image description here

したがって、URLスラッグを作成するための次のアプローチを検討しています。

-(1)_ASCII以外の文字を推奨のASCII表現に置き換えながら文字列を変換します:Bayern München-> bayern-muenchen
-(2)も文字列をpercent encodingに変換します:Bayern München-> bayern_m%C3%BCnchen
-バージョン(1)からバージョン(2)への301リダイレクトの作成

バージョン(1)URLsはマーケティング目的で使用できます(例:mywebsite.com/bayern-muenchen)が、ブラウザーバーに表示されなくなるURLsはバージョン(2)URLs(例:mywebsite.com/bayern-münchen)です。

このアプローチの特定の問題を予見できますか? (ウィキペディアはそれをしていないので、URLsを販売する必要がないという事実は別として、なぜだろうかと思います)

5
Max

URLで国際文字を使用する場合、注意すべき問題がいくつかあります。

  • パーセントURLエンコードには文字セットが必要です。 WebブラウザーでURLを正しく表示するには、スラッグをパーセントURLエンコードするときに「UTF-8」文字セットを使用する必要があります。参照: nicode文字をURLエンコードする適切な方法は何ですか?
  • URLにエンコードされた文字が多数ある場合、URLが大幅に長くなる可能性があります。以下は、国際的なテキストで表示される多くの日本語文字とURLエンコードを使用した例です。
    • http://www.dmoz.org/World/Japanese/オンラインショップ/地域別・エスニック/アジア/日本/
    • http://www.dmoz.org/World/Japanese/%E3%82%AA%E3%83%B3%E3%83%A9%E3%82%A4%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%97/%E5%9C%B0%E5%9F%9F%E5%88%A5%E3%83%BB%E3%82%A8%E3%82%B9%E3%83%8B%E3%83%83%E3%82%AF/%E3%82%A2%E3%82%B8%E3%82%A2/%E6%97%A5%E6%9C%AC/
  • URLは国際文字でalways表示されない場合があります。 URLが多くの%記号でエンコードされて表示される場合があります。
    • 古いブラウザ
    • URLがコピーされて貼り付けられたとき(たとえば、フォーラムに)

URLの発音区別記号を削除しても問題ありませんが、すべての国際文字(中国語や日本語など)で使用できるわけではありません。言語に依存する場合もあります。ドイツ語ではüueに置き換えられますが、他の言語では単なるuに置き換えられます。

1

私は最初のアプローチに行きます、すなわち:

  1. すべての発音区別符号を、指定された言語の理解可能な対応するものに置き換えます(たとえば、MünschenからMunschen)。
  2. 次に、アクセント記号のないラテン1文字で置き換えることにより、残りのすべての発音区別記号を削除します。
  3. 次に、スペースをダッシュ​​(および複数のダッシュを単一のダッシュ)に置き換えます。

そうすれば、訪問者はあなたのURLを読むことができ、検索エンジンの食べ物が詰め込まれます。

0
Alex