• ベストアンサー

phpのmb_convert_encodingで文字化け

phpのmb_convert_encodingで文字化け phpでmb_convert_encodingを使用してSJISよりUTF-8にエンコーディングしています。 ところが、“(”や“?”などが1文字目に存在すると文字化けしてしまいます。 どのような原因が考えられますでしょうか? お願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
noname#111181
noname#111181
回答No.1

OSの種類とPHPのバージョンが分からないので何とも言えませんが、mbstring.so/dllライブラリのバージョンが古いのかもしれません。ご確認ください。

参考URL:
http://www.phppro.jp/phptips/archives/vol20/2
papope
質問者

お礼

お手数をおかけしています。 詳細に調査したところ1文字の(株)を特殊文字のため 3文字に変換して登録しているのですが、その文字の変換では うまくいき、元からある2バイト文字の(に反応して文字化けを 起こしているようです。 2バイトの(を1バイトの(に変換することで、とりあえず対応しました。 (バイナリエディタで元ファイルを参照しても特に異常はありませんでした) 根本の原因は不明ですが対処できますので、これにて閉じさせていただきます。 ご回答くださいました皆様、ありがとうございました。

papope
質問者

補足

ご指摘ありがとうござます。 OSはLINUX(FEDORA) PHPは5.1.6になります。 PHP自体が最新ではありません。 よろしくお願いいたします。

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • smileeeen
  • ベストアンサー率70% (21/30)
回答No.2

mb_convert_encodingを実行する際に第3引数は指定されていますでしょうか。 SJIS⇒UTF-8という事が自明なのであれば $text = mb_convert_encoding($text, 'UTF-8', 'SJIS'); と第3引数も指定する事でうまくいくかもしれません。

papope
質問者

補足

回答ありがとうござます。 説明が足りませんでした。 第3引数は指定しています。 それでもだめです。

すると、全ての回答が全文表示されます。

関連するQ&A