[PHP-users 21812]Re: mb_convert_encodingについて

komura komura @ ma9.seikyou.ne.jp
2004年 5月 23日 (日) 14:10:16 JST


komura です。

On Sun, 23 May 2004 10:58:50 +0900
NISHIMURA Yutaka <tit4tat @ xpost.plala.or.jp> wrote:

> phpを4.2.2 国際化版から 4.3.6に変更した所、
> mb_convert_encodingにおいて、挙動がおかしいので困っております。
> http://www.php.net/manual/ja/function.mb-convert-encoding.php
> こちらのページには、
> > /* "auto" は、"ASCII,JIS,UTF-8,EUC-JP,SJIS" に展開される */
> > $str = mb_convert_encoding($str, "EUC-JP", "auto");
> と書いてありますが、4.3.6にバージョンアップしてからは
> Warning: mb_convert_encoding(): Unable to detect character encoding
> in /hoge.php on line foo
> と警告が発生し、文字化けします。
> そこで、autoはASCII〜SJISに展開されるとあるので
> $str = mb_convert_encoding($str,"EUC-JP","ASCII,JIS,UTF-8,EUC-JP,SJIS")
> としてやると問題なく動作するようです。
> autoで展開されるとありますが、されてないようです。
> 
> ですが、"auto"と書かれたスクリプトを全て手動で展開しなおすのは
> 非現実的ですのでなんとかしたいのですが、
> 何とかする方法は有りませんでしょうか?

php.ini の mbstring.language には何か指定されていますでしょうか。
もし、コメントアウトされている場合は以下のように指定すれば、思い通りの
動作をすると思います。

mbstring.language = Japanese

php.ini を変更した場合は、Apache の再起動を忘れないで下さい。


または、PHP スクリプトの最初に

mb_language( 'Japanese' );

を入れるだけでも良いかもしれません。

-- 
komura <komura @ ma9.seikyou.ne.jp>


PHP-users メーリングリストの案内