php中json_エンコードの問題分析
1281 ワード
例えば、'ハク'はjson_を経由します。encode処理後は'\u 80 e 5'になり、最終的にはjsonの中国語部分はunicode符号に置き換えられます。私達が解決したいのは、対象をJsonに変換し、保証対象内部の中国語はJsonにおいても正常な中国語で出現しています。今はJson_しか使わないようです。エンコードは目的を達成することができません。私の解決方法:まずクラスの中国語フィールドをurl符号化して、対象をjson符号化して、最後にurl復号します。即ち最終のjsonです。中の中国語は相変わらずその中国語です。テストコードは以下の通りです。
<?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"
ここでれんがを投げて玉を引く役割を果たしてほしいです。皆さんのより良い解決方法を集めてください。