[PHP-users 28769] Re: 文字化け
choice
info @ choice-site.com
2006年 3月 21日 (火) 09:23:52 JST
大垣さま
レスありがとうございます。
なかでです。
----------------------- Original Message -----------------------
On Mon, 20 Mar 2006 22:57:33 +0900
Yasuo Ohgaki <yohgaki @ ohgaki.net> wrote:
> 大垣です。
>
> ---
> <?php
> $incode=mb_detect_encoding($_POST['name']);
> $outchar=mb_convert_encoding($_POST['name'],'EUC-JP',$incode);
> echo '入力文字コード:'.$incode.'<br>';
> echo '変換後文字列:'.$outchar.'<br>';
> ?>
> ---
>
> では$_POST['name'] *だけ* で文字エンコーディングの判定を試みていま
> す。せめて
>
> $incode = mb_detect_encoding(join($_REQUEST));
>
> 等にしないと誤判定が多くなりすぎると思います。こうしないと「美乳」
> 等のエンコーディング判定に役立つ文字列を送信しても利用されません。
>
上記、勉強になりました。ありがとうございます。
で、上記のように修正してためさせていただきましたが、
文字化けは解消されませんでした。
ちなみにですが、「美乳」はなく、「箱田」だけでもJISと正しく判断
されました。また、mb_detect_encodingで判定に失敗することも考えて
$outchar=mb_convert_encoding($_POST['name'],'EUC-JP',$incode);
ではなく
$outchar=mb_convert_encoding($_POST['name'],'EUC-JP','JIS');
もためしましたが問題は解消されませんでした。
ですので、ここ以外に問題があるのではと思うのです。
僕としては以下のア、イのどちらでも結果は同じだと
思っていたのですが、結果を見ると違うようです。
なぜだろう…。
ア)
php_value mbstring.http_input pass
で入力時には変換せず、自前のスクリプト内でmb_convert_encoding
を利用して変換する。
イ)
php_value mbstring.http_input auto
で入力時に変換して自前のスクリプト内では変換しない。
では、失礼します。
> 判定用の文字列が短すぎる事は[PHP-users 28700]で指摘されていますね。
>
> --
> Yasuo Ohgaki - yohgaki @ ohgaki.net
> http://www.ohgaki.net/
>
>
> _______________________________________________
> PHP-users mailing list PHP-users @ php.gr.jp
> http://ns1.php.gr.jp/mailman/listinfo/php-users
> PHP初心者のためのページ - 質問する前にはこちらをお読みください
> http://www.php.gr.jp/php/novice.php3
----
PHP-users メーリングリストの案内