WWWで公開する文書等へのURIは半角英数字で記述するものとしております。では日本語URIを使ってはいけないのでしょうか。
検索エンジンでの日本語URIの扱い
多くのサイトで、HTML文書を公開する際には日本語ファイル名は使わないようにと言う事が書かれております。
しかし、実際に日本語文字をファイル名にしてもサーヴァに置けない訳ではありませんし、HTTPでアクセス出来なくなる訳でもありません。
ですが、日本語文字をURIに含めるには重大な問題が孕んでおります。
この問題のため、日本語ファイル名を使ってはいけないと解説せざるを得ないのです。
ご承知の通り、日本語にはシフトJISコード, 日本語EUC, ISO-2022-JP(JISコード)及びUTF-8コードなど幾つもの文字コードがあります。
半角英数字などのアスキィ文字はどんな文字コードでも同じものとなるため、文字コードの違いを考慮する必要はありません。
しかし、日本語文字(仮名文字や漢字など)は文字コードが変わると全く異なるバイナリとなります。
このため、日本語URIを持つサイトをリンクしようとすると、リンク元サイトの文字コードに依っては全然違うURIとなってしまう事になります。
例えば「www.しらぎくさいと.jp/堀北真希/」と言うURIにアクセスしようとすると、
となり、それぞれ全然違うURIと見なされてしまいます。
もう一つ、サーヴァに依っては非英語の文字コードを正常に認識出来ない場合があります。
このため、サーヴァの処理の段階で誤作動が起こる場合もあります。
また、そもそも、日本語文字を用いたファイル名のファイルを置けないサーヴァもあります。
このようなサーヴァでは、無理矢理日本語文字を用いたファイル名をFTPクライアントで置こうとするとエラーになってしまうのです。
日本語のURIをどうしても使いたいと言うのであれば、以下の二つの内から撰ぶ事となるでしょう。
URLエンコードとは上記のように非アスキィ文字などを%XX(半角のパーセント記号の後に英数字二桁)が続く形に変換する事です。
通常、URLエンコードされたURIはエンコード前のURIと同一と見なされます。
また、非アスキィ文字が除去されるため、どの文字コードでエンコードされた日本語ウェブページでも問題無くリンク出来ます。
但し、自分のサイト内のリンクも全てURLエンコードしておいたものを使う必要があります。
こうなってしまうと、日本語URIを導入する意味が無いでしょう。
サーヴァ側でシフトJISコード, 日本語EUC, ISO-2022-JP(JISコード)及びUTF-8コードなどの文字コードのうちどの文字コードでエンコードされた日本語URIかを判別したうえで、サーヴァで利用している文字コードにエンコードし直してアクセスするようにします。
つまり、文字コードが違っていても同じものがアクセス出来るようにします。
但し、これを実際に行えるようにするにはそのような処理を行うプログラムを自分で書き、尚且つサーヴァの設定も必要になります。
当サイトでも一部コンテンツのURIを日本語化しましたが、この方法で対応しております。
また、可能ならファイル名は日本語EUCかUTF-8コードでエンコードするようにしましょう。
シフトJISコードでファイル名を書いた場合、サーヴァに設置する際にファイル名が化けてしまう場合があります。
これはFTPクライアントやサーヴァの問題と思われますが、稀にそう言うトラブルもある事は知っておいた方が良いでしょう。
加えて、シフトJISコードはPerlなどのプログラムにも適しません。
制作者は日本語URIを適切に処理させるために、mod_perlなどを用いたプログラムを作りましたが、シフトJISコードでエンコードされたファイル名を扱うのにいろいろ苦慮しました。
不用意なコードを書くとセキュリティホールすら空け兼ねません(ウェブプログラミングに覚えのある方へのヒント・たて棒)。
このため、シフトJISコードでのファイル名のエンコードは実は推奨出来ません。
加えて、空白文字が入るとサーヴァのOSがファイルを取扱えなくなる事があります。
ですから、空白文字は絶対に使ってはいけません。
グーグルなどの検索エンジンで、URIに日本語文字が表示される場合があります。
これは、URIがUTF-8コードでエンコードされている場合にそのように表示されるようになっているものです。
検索エンジンは文書だけでなくURIも検索の対象とします。
今までなかなか日本語URIを使える状況には無かったため、余り役には立っていないようですが、このような状況から導入を考えたくなるものです。
とは言え、ローカルの制作環境がUTF-8コードでファイル名を定められるようにはなっている事は余り無いでしょうから、何らかの工夫が必要になるでしょう。
或いはメディアウィキなど、URIをUTF-8コードで扱うウェブプログラムを利用すると言うのも考えられるでしょう。
西暦2005年(平成17年)に、RFC第3987号でIRI、すなわち国際化されたリソース識別名の仕様が定められました。
これに依れば、従来のURIで利用出来た文字は半角英数字と一部の半角記号のみだったのが、IRIではユニコードで定められた文字に増える事となります。
但し、IRIはURIの拡張仕様ではありません。
従って、今後新たに定められたXML応用言語などでIRIの使用を明確に定めない限り、IRIを使う事は出来ないと言えます。
最も、URIの範囲でも非英語文字を使えない訳ではありません。
URIで使用が認められている非予約文字以外の文字は、URLエンコードと呼ばれる「%xx」と言う形に変換する事で利用する事が認められているからです。
しかし、文字コードが違うとURLエンコードした結果は全然違う形になってしまいます。
IRIではUTF-8コードに統一する事でこの問題を解決しているのです。
尚、検索エンジンがURIを日本語表示するのは、そのURIがIRIとしても適合する場合とも言えます。