ホームページ > バックエンド開発 > PHPチュートリアル > json_encode が中国語の文字が Unicode にエスケープされるのを防ぐ方法

json_encode が中国語の文字が Unicode にエスケープされるのを防ぐ方法

WBOY
リリース: 2016-07-29 09:02:09
オリジナル
1052 人が閲覧しました

ご存知のとおり、json_encode は通常、json 内の漢字を Unicode にエスケープしますが、これは必ずしも私たちが望んでいることではありません。場合によっては、json 文字列を漢字の形式で取得する必要があることがあります。たとえば、gbk でエンコードされた json 文字列を取得する必要があります (文字列を中国語の形式にトランスコードすることで取得できます)。何か良い方法はありますか?

php 担当者はこのニーズを聞き、信頼できるソリューション JSON_UNESCAPED_UNICODE を提供しました。このパラメータにより、json_encode が中国語の文字を Unicode に変換しなくなります。

これで問題は解決したように思えますか?このパラメータを喜んで使用したところ、役に立たないことがわかりました。よく見ると、このパラメータは PHP 5.4 以降でのみサポートされていることがわかります。以前の PHP はどうでしょうか?

コミュニティは解決策を提供しています:

<span>1</span><span>function</span> my_json_encode(<span>$arr</span><span>){
</span><span>2</span><span>//</span><span>convmap since 0x80 char codes so it takes all multibyte codes (above ASCII 127). So such characters are being "hidden" from normal json_encoding</span><span>3</span><span>array_walk_recursive</span>(<span>$arr</span>, <span>function</span> (&<span>$item</span>, <span>$key</span>) { <span>if</span> (<span>is_string</span>(<span>$item</span>)) <span>$item</span> = mb_encode_numericentity(<span>$item</span>, <span>array</span> (0x80, 0xffff, 0, 0xffff), 'UTF-8'<span>); });
</span><span>4</span><span>return</span> mb_decode_numericentity(json_encode(<span>$arr</span>), <span>array</span> (0x80, 0xffff, 0, 0xffff), 'UTF-8'<span>);
</span><span>5</span> }
ログイン後にコピー

ただし、5.2 は匿名関数をサポートしていないため、この方法は 5.3 でのみサポートされています。解決策は?無名関数を定義するだけです。

上記では、json_encode が中国語の文字が Unicode にエスケープされるのを防ぐ方法を紹介しており、これが PHP チュートリアルに興味のある友人に役立つことを願っています。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート