PHPで「Malformed UTF-8 characters」エラーが発生

こんにちは、さるまりんです。

今回はPHPの小ネタです。

こんなエラーが出ました。

Malformed UTF-8 characters, possibly incorrectly encoded

いやーん、なんか文字コード系のエラーですね。
あまり詳しくないのでこういうのハマってしまう事が多くて。

メッセージの文言そのままで検索してみるとこんなのが出てきました。

stackoverflow : PHP json encode – Malformed UTF-8 characters, possibly incorrectly encoded

回答にUTF-8以外の文字が含まれていると発生するとあり、その中のコード

$data['name'] = mb_convert_encoding($data['name'], 'UTF-8', 'UTF-8');

で回避できました。↑のコードは文字列からUTF-8以外の文字を取り除いてくれます。

で、なんでUTF-8以外の文字が含まれていたのかというと、日本語の文字列をsubstr()でカットしたらゴミのようなものが残ってしまっていたようです。

マルチバイト文字列にはmb_substr()を使うようにしましょう。

当たり前のような事ですが、やってしまっていたので勉強になりました。

書いているコードが何をしているか知っていることって重要ですね。

頑張ります。

読んでくださってありがとうございます。

それではまた!