• 締切済み

Gmailの取り込みで文字化けする

PHPの問合せフォームでGmailに届いたメールを取り込む処理を作成しています。 サイトが多言語対応で日本語と英語は問題なく取り込めているのですが、韓国語や中国語などが文字化けしてしまいます。 エンコードがUTF-8じゃなく「KS_C_5601-1987」などできて、PHP側で認識できていないのが原因だと思います。 iconv()、mb_convert_encodingだと以下のエラーになります。 iconv:Wrong charset, conversion from `ks_c_5601-1987' to `UTF-8' mb_convert_encoding:Illegal character encoding specified PHP Infoのmbstringは添付のようになっています。 php.ini内では特にmbstringの設定はしていないのですが、 /etc/php.d/mbstring.ini で設定をしているようです。 その中も「extension=mbstring.so」とextensionしているだけです。 すでに動いているサイトですので、PHPの再インストールをせずに他の言語も使えるようにしたいのですが、何か良い方法はありませんか? ここ1週間ほど、ここで立ち止まっていますので、なにかご教授いただけないでしょうか。 よろしくお願いします。

みんなの回答

  • agunuz
  • ベストアンサー率65% (288/438)
回答No.1

EUC-KRやISO-2022-KRならまだしもKS_C_5601-1987ですか・・・。そもそもソース(ext/mbstring/libmbfl/mbfl/mbfl_encoding.h)に存在してませんからね。 http://php.net/manual/ja/mbstring.supported-encodings.php http://php.net/manual/ja/mbstring.encodings.php ゴリゴリと自分で書くか外部アプリで変換させるしかないと思います。 が、そもそも >PHPの問合せフォームでGmailに届いたメールを >取り込む処理を作成しています。 (取り込む処理をしているphpスクリプトでなく)元々の問い合わせフォームはいったいどういう仕様なんでしょうか?utf-8ならまだしも、何故KS_C_5601-1987のメールが送られてくるのか(フォームはどうやって処理しているのか)。そこが腑に落ちません。 日本語環境だって「Shift_JISやEUC-JPのメールが送られてくる」なんてあり得ませんよね。それどころがISO-2022-JPなのかUTF-8なのかもスクリプトで(そうなるように)書きます。それとも「メールフォーム」ではなく単なるmailtoスキームなんでしょうか?

amountainblast
質問者

補足

回答ありがとうございます。 サポートされてないんですね。自分で組むのも時間がかかりすぎるんで、対応は相談したいと思います。 こちらメールフォームは使っていません。 問合せ用のアドレスに各自のメーラーからメールを送信してもらい、それを取り込むようにしています。 その為に、こちらで言語の指定ができないんです。