ホームページ > バックエンド開発 > PHPチュートリアル > php json_encode中国語エンコードの問題

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

WBOY
リリース: 2016-07-25 09:04:22
オリジナル
1097 人が閲覧しました
  1. $a = array('city' => "北京"'abcd天津");
  2. echo json_encode($a) . "n";
  3. ?>
  4. debian-test - server:/home/php# p​​hp test1.php
  5. {"city":"u5317u4eac"'\abcdu5929u6d25"}
コードをコピー

要件、データベース内のフィールドには複数の値を保存できるため、データは json でエンコードされ、データベースに保存されます。PHP の組み込み json_encode 関数で処理すると、中国語は Unicode コードになります (例: {"city":"u5317u4eac"'\abcdu5929u6d25"})。正しく処理できますが、携帯電話から同期されるデータはUnicodeではなく漢字(例:{"city":"Beijing"'\abcdTianjin"})です。2か所から渡されたデータを保存するため、同じエンコーディングのデータベースを使用する場合、ここでは Unicode コードを中国語の文字に変換するか、json_encode 関数をカスタマイズします。この関数は中国語の文字を Unicode コードに変換しません。

PHPの公式サイトでデータをjsonに変換する関数を見つけましたが、中国語はunicodeに変換されません。

  1. /**

  2. * PHP の json 拡張機能に付属する関数 json_encode は中国語の文字を Unicode コードに変換します
  3. * したがって、ここではカスタムの json_encode を使用しますが、この関数は中国語の文字を Unicode コードに変換しません
  4. */
  5. functioncustomJsonEncode($a = false) {
  6. if (is_null($a)) return 'null';
  7. if ($a === false) return 'false';
  8. if ($a === true) return 'true';
  9. if (is_scalar($a)) {
  10. if (is_float($a)) {
  11. / / float には常に「.」を使用します。
  12. return floatval(str_replace(",", ".", strval($a)));
  13. }

  14. ) {

  15. static $jsonReplaces = array(array("\", "/", "n", "t", "r", "b", "f", '"'), array('\\' 、'\/'、'\n'、'\t'、'\r'、'\b'、'\f'、'"'));
  16. return '"' 。 , $jsonReplaces[1], $a) . '"';
  17. } else {
  18. return $a;
  19. }
  20. }

  21. $isList = true;

  22. for ($i = 0 、リセット($a); $i < count($a); $i++, next($a)) {
  23. if (key($a) !== $i) {
  24. $isList = false;
  25. ;
  26. }
  27. }

  28. $result = array();

  29. if ($isList) {
  30. foreach ($a as $v) $result[] =customJsonEncode($v);
  31. return '[' . join(',', $result) . ']';
  32. } else {
  33. foreach ($a as $k => $v) $result[] =customJsonEncode($k).': '.customJsonEncode($v);
  34. return '{' . join(',', $result) . '}';
  35. }
  36. }

  37. $a = array('a' => array('c' => '中国\"'国', 'd' => '韓国'), 'b' => '日本');

  38. echo CustomJsonEncode($a) 。 l ;
  39. $b = array(array('c' => '中国\"'国', 'd' => '韓国'), '日本');
  40. echo CustomJsonEncode($b) . l ;
  41. ?>

コードをコピー

出力: {"a":{"c":"中国\"'国","d":"韓国"},"b":"日本"} [{"c":"中国\"'国","d":"韓国"},"日本"]



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