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

   

■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

 

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

megane

megane

最近、個人事業主から法人へと進化しました。 エンジニア歴13年位です。PHPとかMysqlを使ってWebシステムを構築します。 Javaも書きます。 CakePHPも使います。 サーバのチューニングもごりごりやります。 あと、お肉と自動車が好きです。Twitterとか申請どうぞ。

 - PHP , ,