phpのjson_encodeがFALSEを戻すときはUTF-8の文字化けの可能性

PHP5

json_encode関数を使って、jsonに変換していた時のエラー

何でか稀にFALSEが戻るときが有ったのです。調査してみた結果、どうもUTF-8でも変なゴミバイトが混じっていると動かないときがあるっぽいですね。以下のように、mb_再度UTF-8からUTF-8に変換するとゴミを排除できました。

$convert =  mb_convert_encoding ($string, 'UTF-8', 'UTF-8');

 

何という無駄コード。。

 

 

もうちょっと詳細に見てみる

以下の関数を使うと、「何でエラーになったのか」メッセージを取得することが出来ます。

json_last_error_msg();

 

今回は、以下のようなメッセージが出ていました。要は、UTF-8ではない文字が混じっているからダメです。ということですね。

Malformed UTF-8 characters, possibly incorrectly encoded

 

文字コードの問題は少なくなってきたとはいえ、まだまだ発生していますね。ほんと文字コードはうざいです。