最近いろんなホームページを見ていて中にURLのページのアドレスに日本語を使っているサイトがあるのに気がつきました。一昔前だと常識的には考えられなかったような気がするのですが、WEBの世界の日本語対応もずいぶん進歩したのかなと思い、今のサーバーでURLのページアドレスに日本語がちゃんと使えるのか、どんな問題があるのかなどを知りたくてちょこっと試してみました。その昔ホームページを作っていて、ファイル名に日本語を使うとうまく表示できないという問題をさんざん経験しました。サーバーはVineLinux4で言語エンコーディングはEUC-JP、表示するパソコンはWindowsで言語エンコーディングはShift-JISでしたので、あまり深くも考えず言語コードが違うのだから当然だろうと思っていたのですが、ホームページ遊びを始めて幾星霜、少し利口になった今、当時の技術が未熟だっただけで「もしかしたらできるかもしれない」と思うようになり、ちょっと試してみたくなりました。日本語ドメイン名(ピュニコードでエンコーディング)の話とはちがいます。ページあるいは写真などのファイル名の話です。そもそも(日本語を使う場合)表示するページには必ずといっていいほど言語情報を書きますが、これを忘れたり間違ったりすると文字化けするのはご存じの通りです。ファイル名にはこの言語情報はありません。したがって英語以外(マルチバイト言語)の場合ブラウザがどう解釈するか、それが実際と異なればファイルにアクセスできないことになります。現在マルチバイト言語のファイル名の標準的な解釈はUTF-8のようですが、ブラウザによってはそれ以外にも設定できることが話をわずらわしくしているようです。WindowsのInternetExplorerなどはインターネットオプションの「UTF-8のURLを送信する」「mailtoリンクでUTF-8を使う」といった項目のチェックを外してしまうとWindowsの言語であるShift-JISとして取り扱ってしまうようです。なんでこんなオプションがあるのかよくわかりませんが、もしかしたら企業内LANなどでWindowsネットワークに特化して使う場合などには便利なのかもしれません。日本語のページ名をつけてみる現在このサイトを作成、表示しているホームページプログラム"IRORIBATA"にはページアドレスに名前をつける機能があります。いったページアドレスになるだけで、どちらでもかまわないのですが、英語は得意でないしめんどうなのであまり名前はつけていません。名前はサーバー内部だけのことを言うなら英語でも日本語でもかまわないはずです。(システムはUTF-8で言語設定は英語と日本語になっていますので、それ以外の中国語やロシア語のようなのはうまく表示できないと思いますが。)で、ためしにこのページに日本語のページ名をつけてみます。「日本語のページアドレス.htm」としてみます。「アドレス」の部分はわざと問題が多いといわれる半角カタカナにしてみました。(→あとでメールのところで半角がだめだったので全角に変えましたが。デスクトップや内蔵のブラウザでもちゃんと表示されます。サーバー内部のことだけ言えば問題はなさそうです。日本語ファイル名の写真をいれてみるついでにファイル名に日本語を使った場合の問題点も検討してみます。具体的には日本語の名前のついた写真をページに掲載、ちゃんとアクセスできるかを調べます。実はその昔写真のファイル名に日本語を使うとだめだった経験があるのですが、その頃は受け取ったファイル名をそのまま使っていました。WindowsパソコンからShift-JISのファイル名を受け取ってもそのまま使ってしまっていたのです。お利口になった今はサーバーに合わせてちゃんとUTF-8に変換してから使っています。ためしにWindowsのInternetExplorerを使ってWindowsで日本語の名前をつけた写真を入れてみました。写真は入り、かつ表示されました。クリックすると拡大写真も表示できます。WindowsマシンからアクセスしてもLinuxマシンからアクセスしても問題ありません。Macや携帯端末は持ってないので試していませんが。ログ(HTTPサーバーapacheのログ)に記録されるファイル名が少々長くなり、見てもどのファイルだかわかりにくくなります。記録されるファイル名は、"\xe4\xba\xac\xe9\x83\xbd\xe6\x99\x82\xe4\xbb\xa3\xe7\xa5\xad.JPG"です。(これがちょっといやだね。Operaでアクセスします。左のメニュー(INDEX)のリンクをクリックして表示させてみます。→いずれもページはちゃんと表示されます。ブラウザのアドレスバーに表示されるアドレスは概ね"kuragane.jp/日本語のページアドレス.htm"と日本語で表示されますが、Operaで「すべてのウェブアドレスをUTF-8でエンコードする」オプションがオフだと%表示になります。ファイル名をURLエンコードし"%E6%97%...."の形にしておいてもちゃんとアクセスはできますが、ブラウザによっては表示されるアドレスも"%E6%97%...."になってしまい日本語にならないので全然おもしろくありません。これでは辞書を手繰って英語の名前を考えた方がまだましです。日本語をそのままローマ字で綴るというのもあまり賢そうに見えないのでやりたくありません。それにしてもやはり長いログが記録されます。ログに記録されるページアドレスは、"kuragane.jp/%E6%97%....htm"となっています。日本語のファイルにアクセスされたらしいとはわかりますが、これではどのファイルだかはやっぱりわかりません。ログを日本語で記録させようとhttpd.confの設定をいくつか試してみましたが、いまのところうまくいきません。ログを日本語化する仕方ないので、パイプを使ってログを修正(UTF-8コードに変換して)して書込むことにします。%E5%97....などの%表記を日本語に変えます。これにより検索サイトからのリファラーの検索クエリーも日本語になり、ログがたいへんわかりやすくなります。