[PHP-users 32697] Re: syslog関数

KOYAMA Tetsuji koyama @ hoge.org
2007年 10月 4日 (木) 01:18:24 JST


小山です。

間違った使い方がいくつかありますね。

On 10/3/07, Shigeru Matsumoto <hxcsn326 @ ybb.ne.jp> wrote:
> $msg = 'あああああ';
> mb_convert_encoding($msg, "UTF-8", "EUC-JP");
> $str = mb_detect_encoding($msg);
> だと、$strにnullが返ります。

mb_convert_encoding() は引数に渡された文字列を書き換えないので

$msg = 'あああああ';
$msg = mb_convert_encoding($msg, 'UTF-8', 'EUC-JP');

である必要があります。マニュアルをちゃんと読みましょう。

> php.iniのmbstringセクションの設定は以下の通りです。
> [mbstring]
> ;mbstring.language = Japanese
> ;mbstring.internal_encoding = UTF-8
> ;mbstring.http_input = auto
> ;mbstring.http_output = UTF-8
>
> mbstring.encoding_translation = On
>
> ;mbstring.detect_order = auto
> ;mbstring.substitute_character = none;
> ;mbstring.func_overload = 0
>
> mbstring.encoding_translation以外はコメントアウトです。
> 設定に問題があるのでしょうか、よろしくお願いします。

スクリプトの文字コードとして EUC-JP を使うのなら

mbstring.language = Japanese
mbstring.internal_encoding = EUC-JP

は指定したほうが良いでしょう。

> mbstring.encoding_translation = On

は HTTP の入力を自動で internal_encoding に変換する設定ですので
PHPの文字コードの扱いに対する自分の理解に不安があるならば、
指定しない方が良いと思います。

-- 
    小山哲志@ビート・クラフト
    koyama @ beatcraft.com
    koyama @ hoge.org


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