[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 メーリングリストの案内