php 5.2 Jsonは中国語の解決方法を正しく処理できません.


php 5.2に追加されたjson機能は非常に人気があります.encodeの中国語に対する処理は問題があります.1.GBコードを処理できません.すべてのGBコードは空の文字に置き換えられます.2.utf 8符号化の中国語はunicode符号化されています.javascriptのescape関数処理の結果に相当します.
jsonを正しく使うためには、まず私達はコーディングにutf 8を採用して、json_エンコードの戻り結果を少し処理すれば、正しい結果が得られます.簡単な種類を書いて、この二つの関数を包装しました.

 
  1. class Json{
  2. public static function encode($str){
  3. $code = json_encode($str);
  4. return preg_replace("#\\\u([0-9a-f]+)#ie", "iconv('UCS-2', 'UTF-8', pack('H4', '\\1'))", $code);
  5. }
  6. public static function decode($str){
  7. return json_decode($str);
  8. }
  9. }
使う時

 
  1. Json::encode($code);
  2. Json::decode($code);
これにより、utf 8符号化の中国語を正しく処理することができます.
PS:GBコードの中国語については、符号化時にUTF 8コードに変えてから符号化し、復号する時にもう一つのutf 8->gbの変換をすればいいです.また一般的にJson_encodeの結果はクライアントに戻って使用します.javascriptのunescape関数でunicode符号化の中国語を復号して正しい中国語に復元することもできます.用:$title=mb_convert_.encoding($title、'HTM-ENTIES'、$this->、//任意のコードで正常に表示されます.