[PHP-users 9064] Mac版ネスケ4.7の文字コードに関する挙動に関して

Ryotaro Shimazu php-users@php.gr.jp
Sat, 3 Aug 2002 14:08:05 +0900


島津と申します。

Mac版ネスケ4.7の文字コードに関する挙動で困っていることがあります。

ホームページのURLと説明文などをPostさせるフォーム(文字コードはEUC)を作成し
ているのですが、確認画面で、そのホームページのURLを
<a href="http://www.hogehoge.com"
target="_blank">http://www.hogehoge.com</a>
などとして表示させています。

リンクをクリックして実際につながるかどうかを調べてもらうという意味合いなので
すが、このリンク先がshift_jisで書かれたホームページであった場合、

確認画面からsubmitボタンを押すと、確認画面はEUCなのに、Mac版ネスケでは
shift_jisでデータが送信されているようです。shift_jisで送信されてもプログラム
でエラーにはなるようになっているのですが、Mac版ネスケ4.7を使っている一般ユー
ザーは何でエラーが起きたのか分からないだろうと思いますので、エラーメッセージ
に苦慮しています。

ちなみに、一度エラーが出ても、「戻るボタン」をクリックして、再度送信すれば今
度はEUCで送信されるのでエラーになりません。

質問したい内容は、
「強制的に文字コードをEUCに指定してPOSTさせる方法はありますか」
ということです。

誤解を避けるために念のために書いておきますと、ブラウザに最終的に出力する際に
文字化けを起こさないためにheaderで文字コードを指定する方法なら分かるのです
が、それではあくまでも出力の際の文字化けにだけしか対応できないと思います。

POSTされたデータの文字コードを調べてエラーにさせることは簡単ですが、POSTさせ
る際の文字コードを指定する方法などありますでしょうか?

文字化けについて調べているうちに.htaccessで
AddType "text/html; charset=EUC-JP" .html
と指定すれば、そのディレクトリー内のhtmlファイルの文字コードをサーバ側で指定
できることが分かりましたので、
AddType "application/x-httpd-php; charset=EUC-JP" .php
などとしてみましたが、駄目でした。

また、Mac版ネスケ4.7に限らず、仮に悪意のあるユーザーがEUCの文字コードを前提
としているデータベースなどにshift_jisのデータを送信してきた場合などを考えた
時に、セキュリティー上ややこしい問題は起こるでしょうか? 今までプログラムを
作成する際に、Postされてきた文字コードなどは調べたことがなかったのですが、文
字コードを調べてから処理するというのは常識なのでしょうか?

URLの妥当性に関しては、プログラムの方でfopenなどで確認するようにもしているの
で、「確認画面でハイパーリンクで表示させていること」自体をやめるようにすれば
解決するとも思うのですが、今後のこともありますので質問させていただきました。
例えば、掲示板の書き込みを読んでURLをクリックして別の文字コードのページを参
照したユーザーが投稿しようとした場合に、Mac版ネスケユーザーは文字化けを体験
する可能性があると思うんです。

最後になりましたが、PHPのバージョンは4.12です。

どうかご教授のほど宜しくお願いします。

島津 良太郎
rshimazu@kaiteki-net.com