[PHP-users 34827] POST送信後に表示される文字

View: New views
3 Messages — Rating Filter:   Alert me  

[PHP-users 34827] POST送信後に表示される文字

by mail-95 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

山下です。

mb_http_output = EUC-JP
スクリプトファイルEUC-JP
php4.3(ちょっと古いですが)
の環境で
名簿登録フォームを作成しています。
<input type="text" name="kanji_first_name">
の部分に JIS補助漢字(32区)の「搵」という文字を入力しPOSTでsubmitすると
この結果、搵 という文字がテキストボックスにセットされてしまいます。

ただこの現象はIE7,8(windows)では確認できましたが、Chrome(windows)、FireFox
(windows)では確認できませんでした。

この現象を解消することが最終的な目的で、その方法として入力したとおりの文字が
表示されない場合はなにかしらのメッセージを表示するようにしたい、というのが
希望です。

なぜこのような現象が起きるのか、
この現象を回避するために、こういった現象が起きる文字をphpでどうやって検出したら
いいのか、
そもそもこの文字は機種依存文字なのか?そうでないのか?
ご存知の方いましたらお教えください。


よろしくお願いいたします。
_______________________________________________
PHP-users mailing list  PHP-users@...
http://ml.php.gr.jp/mailman/listinfo/php-users
PHP初心者のためのページ - 質問する前にはこちらをお読みください
http://oldwww.php.gr.jp/php/novice.php3

[PHP-users 34828] Re: POST送信後に表示される文字

by papa pahoo :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

山下さん、こんにちは。
パパぱふぅです。

php.ini の設定ですが、
mb_http_output = pass
になっていますか?

下記ページが参考になるかと思います。
http://www.pahoo.org/e-soul/webtech/php03/php03-04-01.shtm

当方の環境(WindowsXP SP3 + Apache 2.2 + PHP 4.3 + IE7/FF3)では
化けませんでしたが、JIS補助漢字を扱うのであれば、EUCよりUTF-8を
使った方が良いと思います。

==========================
  パパぱふぅ
  http://www.pahoo.org/
==========================

_______________________________________________
PHP-users mailing list  PHP-users@...
http://ml.php.gr.jp/mailman/listinfo/php-users
PHP初心者のためのページ - 質問する前にはこちらをお読みください
http://oldwww.php.gr.jp/php/novice.php3

[PHP-users 34829] Re: POST送信後に表示される文字

by Masayuki MORIYAMA :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

森山です。

Web で EUC-JP と言った場合、正式な EUC-JP とは違い
Windows の丸つき数字などを拡張した文字コードが使わ
れています。

Windows の IE での使われいるのは、MLANG.DLL で提供
されている変換ルーチンで使用できる Windows Codepage
51932(以後、cp51932 とします) と呼ばれるものです。

この cp51932 は、EUC-JPのJISX 0212 補助漢字がサポー
トされていませんので、IE では数値文字参照に変換して
から POST しています。

Firefox でのEUC-JPの変換に関しては、cp51932 をベース
にして補助漢字をサポートするような拡張が行なわれてい
ます。

この拡張は、一見すると妥当なように思われるかもしれま
せんが、次のような問題があります。

POST 時に cp51932 の NEC選定IBM拡張文字と補助漢字
の両方で定義されている文字(例えば、草なぎ剛の「なぎ」
の字)に関して、POST する際に、補助漢字のコードポイ
ントではなく NEC選定IBM拡張のコードポイントと優先され
ます。

そして、補助漢字にだけ存在する文字(例えば、森鴎外の
鴎が[區鳥]の字体になっている文字)は、補助漢字のコー
ドポイントを使用するという事をやっているため、cp51932
で変換すると補助漢字が変換できず、補助漢字を変換し
ようとして eucJP-ms(PHPだとeucJP-win)で変換すると、
cp51932 の NEC選定IBM拡張文字を正しく変換できないと
いう問題が発生してしまいます。

bug 4873 – EUC-JPエンコーダは補助漢字を変換すべきではない
http://bugzilla.mozilla.gr.jp/show_bug.cgi?id=4873

eucJP-ms と CP51932 の違い コードページ932/ウェブリブログ
http://msyk.at.webry.info/200511/article_2.html

「[區鳥]」が「乗ス」に化けるメカニズム コードページ932/ウェブリブログ
http://msyk.at.webry.info/200611/article_2.html

Web で EUC-JP を使って文字化けを回避したい場合、こ
のようなWebブラウザ依存の問題やDBの対応文字コードの
問題をアプリ側で自力解決する必要があります。

もしお手軽に解決したいという事なのであれば、EUC-JP
はやめて UTF-8 に移行するのが一番簡単と言えます。

--
森山 将之 http://msyk.at.webry.info/
_______________________________________________
PHP-users mailing list  PHP-users@...
http://ml.php.gr.jp/mailman/listinfo/php-users
PHP初心者のためのページ - 質問する前にはこちらをお読みください
http://oldwww.php.gr.jp/php/novice.php3