-
- $a = array('city' => "北京"'abcd天津");
- echo json_encode($a) . "n";
- ?>
- debian-test - server:/home/php# php test1.php
- {"city":"u5317u4eac"'\abcdu5929u6d25"}
コードをコピー
要件、データベース内のフィールドには複数の値を保存できるため、データは json でエンコードされ、データベースに保存されます。PHP の組み込み json_encode 関数で処理すると、中国語は Unicode コードになります (例: {"city":"u5317u4eac"'\abcdu5929u6d25"})。正しく処理できますが、携帯電話から同期されるデータはUnicodeではなく漢字(例:{"city":"Beijing"'\abcdTianjin"})です。2か所から渡されたデータを保存するため、同じエンコーディングのデータベースを使用する場合、ここでは Unicode コードを中国語の文字に変換するか、json_encode 関数をカスタマイズします。この関数は中国語の文字を Unicode コードに変換しません。
PHPの公式サイトでデータをjsonに変換する関数を見つけましたが、中国語はunicodeに変換されません。
-
-
/** - * PHP の json 拡張機能に付属する関数 json_encode は中国語の文字を Unicode コードに変換します
- * したがって、ここではカスタムの json_encode を使用しますが、この関数は中国語の文字を Unicode コードに変換しません
- */
- functioncustomJsonEncode($a = false) {
- if (is_null($a)) return 'null';
- if ($a === false) return 'false';
- if ($a === true) return 'true';
- if (is_scalar($a)) {
- if (is_float($a)) {
- / / float には常に「.」を使用します。
- return floatval(str_replace(",", ".", strval($a)));
- }
) {
- static $jsonReplaces = array(array("\", "/", "n", "t", "r", "b", "f", '"'), array('\\' 、'\/'、'\n'、'\t'、'\r'、'\b'、'\f'、'"'));
- return '"' 。 , $jsonReplaces[1], $a) . '"';
- } else {
- return $a;
- }
- }
$isList = true;
- for ($i = 0 、リセット($a); $i < count($a); $i++, next($a)) {
- if (key($a) !== $i) {
- $isList = false;
- ;
- }
- }
$result = array();
- if ($isList) {
- foreach ($a as $v) $result[] =customJsonEncode($v);
- return '[' . join(',', $result) . ']';
- } else {
- foreach ($a as $k => $v) $result[] =customJsonEncode($k).': '.customJsonEncode($v);
- return '{' . join(',', $result) . '}';
- }
- }
$a = array('a' => array('c' => '中国\"'国', 'd' => '韓国'), 'b' => '日本');
- echo CustomJsonEncode($a) 。 l ;
- $b = array(array('c' => '中国\"'国', 'd' => '韓国'), '日本');
- echo CustomJsonEncode($b) . l ;
- ?>
-
コードをコピー
出力:
{"a":{"c":"中国\"'国","d":"韓国"},"b":"日本"}
[{"c":"中国\"'国","d":"韓国"},"日本"]
|