http://qiita.com/shoyan/items/d9f7c014ba8003e19b57
mb_convert_encoding ( string $str , string $to_encoding [, mixed $from_encoding ] ) は
文字エンコーディングを変換する関数です。
第3引数の $from_encoding には変換前の文字エンコーディング名を指定しますが、
ここを“auto”と指定しておくと、環境によっては
Warning: mb_convert_encoding(): Unable to detect character encoding
のようなエラーが発生し、文字エンコーディングの変換が失敗する場合があります。
ですので、”auto” は極力使わず、文字エンコーディングを指定することをおすすめします。
なぜこのようなエラーが発生するかというと、
autoはphp.iniの言語設定によって挙動が変わってしまうからです。
mb_convert_encodingとうまく付き合うには
①autoは使わない
autoは指定せずに適切なエンコーディングを指定しましょう。
言語設定が Japanese の場合は “ASCII,JIS,UTF-8,EUC-JP,SJIS” です。
autoを指定したい場合は代わりに、”ASCII,JIS,UTF-8,EUC-JP,SJIS”と設定しましょう。
mb_convert_encoding ( string $str , string $to_encoding , “ASCII,JIS,UTF-8,EUC-JP,SJIS”)
②php.iniを変更する
もしくは、php.iniに mbstring.language = Japanese を指定しておけばautoと指定した場合は”ASCII,JIS,UTF-8,EUC-JP,SJIS”として認識されます。
しかし、この方法はphp.iniとの依存関係が強くなるためあまりおすすめできません。
③mb_language関数を使用する
php.iniを変更するのが難しい場合は、mb_convert_encodingの前に
mb_language(“Japanese”); と指定する方法もあります。
—————————————————————————————-
★!! 注意 !!★ mb_convert_encoding関数には配列を引数として渡すことはできない
例)$match_titleが配列(Array)の場合、文字列に変換しようとして以下、コードを書くと
$match_title = mb_convert_encoding($match_title,”UTF-8″,”SJIS”);
↓↓↓↓↓↓↓下の様なエラーが出る↓↓↓↓↓↓↓
「Notice: Array to string conversion in C:\php\nobuneko\test.php on line 23」
「Array(配列)を文字変換(?)しようとしている」????
なので、配列の要素を限定して、