[PHP-users 28765] Re: 文字化け
Yasuo Ohgaki
yohgaki @ ohgaki.net
2006年 3月 20日 (月) 22:57:33 JST
大垣です。
choice wrote:
> ---
> php_value default_charset EUC-JP
> php_value mbstring.language Japanese
> php_flag mbstring.encoding_translation ON
> php_value mbstring.internal_encoding EUC-JP
> php_value mbstring.http_input pass
> php_value mbstring.http_output EUC-JP
> php_value mbstring.substitute_character none
> ---
>
> としていた(最初のメールから少し修正しています)のですが、
> http.inputのところを
>
> php_value mbstring.http_input pass
>
> から
>
> php_value mbstring.http_input auto
>
> に変更すると正しく「箱田」と表示されました。
>
> PHPへの入力の際に自動的にEUCに変換させるのと、PHPへの入力の際には
> は変換せずにスクリプト内でEUCに変換させるのは同じことだと思って
> いたのですが違いがあるのでしょうか。
> うーん。なんでだろう?
>
テストコードは以下のコードと投稿されているので同じになりません。
---
<?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));
等にしないと誤判定が多くなりすぎると思います。こうしないと「美乳」
等のエンコーディング判定に役立つ文字列を送信しても利用されません。
判定用の文字列が短すぎる事は[PHP-users 28700]で指摘されていますね。
--
Yasuo Ohgaki - yohgaki @ ohgaki.net
http://www.ohgaki.net/
PHP-users メーリングリストの案内