こんにちは、さるまりんです。
今回は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()
を使うようにしましょう。
当たり前のような事ですが、やってしまっていたので勉強になりました。
書いているコードが何をしているか知っていることって重要ですね。
頑張ります。
読んでくださってありがとうございます。
それではまた!