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