2005年6月7日

Firefox urlエンコード機能をUTF-8化する方法。

元町になったクルマ屋さん。もうありません。
 「url に日本語が含まれている場合の Firefox と IE の挙動の違い。」 というポストに対し,mac上のfirefoxやsafariだと大丈夫というコメントをhitさんからいただきました。で,挙動の差についていろいろ調べてみたんですが,参考になる情報がなかったので,もじら組の掲示板に「Firefoxのurlエンコード機能について」という記事を投稿してみました。
 いろいろ参考になる意見や情報を得られました。多謝。

 で,結論的には,現在のFirefoxはソースの文字コードをベースにurlエンコードしています。ですので,こちらのページのようにshift-jisで構成しているページからUTF-8で構成されているページへのアクセスにマルチバイトを含むと正常に文字として認識(復元)されません。
 Firefox1.1(現在公開されているDeer Park alphaでも)ではUTF-8でurlエンコードするのが標準となります。他のブラウザーと同様に振舞うという訳です。

 今回は,IEにしろ,mac上のfirefoxにしろ,urlエンコードをutf-8にしていたために,たまたまTechnoratiのサイトではうまく行ったということで,例えばEUCのサイトだとそれはそれで問題になっていたはずです。なかなか難しいところです。

 ユーザーが認識できる問題点には限りがありますから提供者側として,

(1) サービス提供者側が文字コードを判別してあげる(url変数のエンコードされた文字列の文字コードを判定,自サイトの文字コードに変換する)必要性がある。

(2) 自サイト内でマルチバイトを含むuriを利用する場合は,必ず文字コードurlエンコードしておかないと,ブラウザーがUTF-8でurlエンコードを決め打ちすると,正常にリンクが機能しない。

 という点が重要になりますね。ASPを使ってUTF-8でエンコードする方法はまだ分からないんですが。

 Firefox1.1では,UTF-8がデフォルトになるということですが,上記の点を考えると,ブラウザーの機能としては,相対リンクに対してはソースの文字コードで,外部リンクにはUTF-8でurlエンコードするのが好ましいような気がしますが,どうでしょう?

 しかし,こういう事柄を「それを意識していない人達に説明する」のは難しいですね。(url-encode,RFC,uri って何??からの説明をしたら嫌がるよなぁ。)

 で,現時点でFirefoxのURLencodeをUTF-8化してしまう方法というのも教えていただきました。

てんぷる の投稿 :2005/06/06(Mon) 10:18:21
(環境: WinXP SP2/Firefox1.0.4)
>  FirefoxのurlエンコードをUTF-8に固定する方法というのはあるのでしょうか,

Windows の Firefox 1.0.4 の場合、about:config にて
network.standard-url.encode-utf8 を true に変更すると
常にUTF-8でエンコードされるようです。


 この情報は貴重です。googleで検索しても殆ど話題に出てきません。いいこと教えてもらいました。

This post is trackbacked to [Firefox People] [photo people*] [クルマ・バイクの写真を撮ろう!] .

Technorati Tags: : Cosmos

2 件のコメント:

匿名 さんのコメント...

 webのPHPファイルから、日本語名のファイルの扱いに困ってた感じで、かなり役に立ちました。
 ポリシーが異なるのはわかるのですが、文字エンコード周りがもっと一般的に対応する規格があるとありがたいですね。
 

ほっしぃ さんのコメント...

ブラウザにUTF-8を設定しなさいというエラーが出て困っていたところ、
こちらのサイトが大変参考になりました。

>こういう事柄を「それを意識していない人達に説明する」のは難しいね
一々マウント取らなくていいから。

ありがとうございました。