ホームページ >バックエンド開発 >PHPチュートリアル >PHPのjson_encode中国語エンコードの問題
実際のアプリケーションでは、漢字が含まれている場合、json_encode()関数を直接使用すると、漢字は「u***」の形式にエンコードされてしまいます。この問題はphp5.4以降で解決されました。 、次の方法を使用します。中国語の文字がエンコードされる問題を解決するには、json_encode(" Chinese", JSON_UNESCAPED_UNICODE)
例: json_encode 処理後、「Xu」は「u80e5」になり、最終的な json の中国語部分は次のように置き換えられます。ユニコードエンコーディング。私たちが解決しなければならないのは、オブジェクトをjsonに変換し、オブジェクト内の中国語がjson内で通常の中国語として表示されるようにすることです。現時点では、json_encodeを使用するだけでは目標を達成できないようです。私の解決策:最初にクラスの中国語フィールドをURLエンコード(urlencode)し、次にオブジェクトをJSONエンコード(jsonencode)し、最後にJSON、つまり最後のJSONをURLデコード(urldecode)します。内部の中国語は依然として同じ中国語です!
テストコードは以下の通り:
<?php class myClass { public $item1 = 1; public $item2 = '中文'; function to_json() { //url编码,避免json_encode将中文转为unicode $this->item2 = urlencode($this->item2); $str_json = json_encode($this); //url解码,转完json后将各属性返回,确保对象属性不变 $this->item2 = urldecode($this->item2); return urldecode($str_json); } } $c = new myClass(); echo json_encode($c); echo '<br/>'; echo $c->to_json(); echo '<br/>'; echo json_encode($c); echo '<br/>'; echo json_encode('胥'); ?>プログラム出力結果:
{"item1":1,"item2":"\u4e2d\u6587"} {"item1":1,"item2":"中文"} {"item1":1,"item2":"\u4e2d\u6587"} "\u80e5"
以上がPHPのjson_encode中国語エンコードの問題の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。