最近、PHPでデータ保存する際に、MongoDBとのデータ連携や、スマホの問い合わせでサーバー処理をする場合に、JSONがとても扱いやすい時代になってきました。
csvやxmlなどは、手続きや、形式の仕様がややこしかったりするので、かなり柔軟に気軽に扱えるJSONは、本当に便利ですよね。
PHPの全角encode問題
PHPも、ver5移行では標準対応してくれているので、便利に簡単に使えるんですが、全角文字列が入っている場合に、encodeした際に、文字がコード化されてしまうので、生データを扱う際にちょっと面倒くさい感じになります。
不思議なことにdecodeする場合は、全く問題ないので、UTF-8環境であれば、できれば、全角そのままでデータ保存したいものである。
ただし、Shift-jisでデータ保存をしたい場合などはエスケープ処理などが必要になるので、この方法はオススメしません。
ソースコード
$data = json_encode("全角対応");
$data = preg_replace_callback('/\\\\u([0-9a-zA-Z]{4})/', function ($matches) {return mb_convert_encoding(pack('H*',$matches[1]),'UTF-8','UTF-16');},$data);
追記
PHP5.4移行であれば、json_encode関数の「JSON_UNESCAPED_UNICODE」オプションを使うことでcallback処理を書かなくても全角対応ができるようです。
書き方は下のような書き方。
$data = json_encode("全角対応" , JSON_UNESCAPED_UNICODE);
参考 :
http://blog.ohgaki.net/json-escape
0 件のコメント:
コメントを投稿