ホームページ  >  記事  >  バックエンド開発  >  PHPのjson_encode中国語エンコードの問題

PHPのjson_encode中国語エンコードの問題

怪我咯
怪我咯オリジナル
2017-07-13 10:06:121886ブラウズ

実際のアプリケーションでは、漢字が含まれている場合、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 = &#39;中文&#39;; 
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 &#39;<br/>&#39;; 
echo $c->to_json(); 
echo &#39;<br/>&#39;; 
echo json_encode($c); 
echo &#39;<br/>&#39;; 
echo json_encode(&#39;胥&#39;); 
?>

プログラム出力結果:

{"item1":1,"item2":"\u4e2d\u6587"} 
{"item1":1,"item2":"中文"} 
{"item1":1,"item2":"\u4e2d\u6587"} 
"\u80e5"

以上がPHPのjson_encode中国語エンコードの問題の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。