seclan のほえほえルーム

| |

Mozilla Firefox 3 で URL 中のマルチバイトと cgi パラメータ部のマルチバイトの符号化形式が異なる問題

・
2009/01/20 []

Mozilla Firefox 3 になってから、URL 中のマルチバイトと cgi パラメータ部のマルチバイトの符号化形式が異なって送信されることが起こるようになりました。例えば「<a href="http://例1.jp/例2.html?値=例3">」を考えて見ます。

まず、ドメイン名に関しては、punnycode に変換され、送信されます。この場合、「xn--1-kb7a.jp」となります。

次に、「例2.html」ですが、Firefox 3 からこれは utf-8 で送信される異なりました。つまり「E4 BE 8B EF BC 92 2E 68 74 6D 6C」となります。

そして、「値=例3」はそのままの文字コートで出力されます。つまり utf-8 なら「例2.html」と同一の文字コードになりますが、shift_jis で送信されると、一致しなくなります。

この動作は CGI に問題をもたらすことがあります。

これを解決するには、 url に「about:config」と入力して設定画面を出し、「network.standard-url.encode-utf8」という項目に、真偽値で値「false」を設定します。これでパラメータ部の文字コードと同じマルチバイトの文字コードそのままで送信されます。



by seclan

関連


| |

 

配信

5 msec