作者:zhanhailiang 日期:2013-01-28
在php5.4以前做json_encode的时候中文会被unicode编码,中文都会被编码, 变成不可读的, 类似“\u***”的格式, 还会在一定程度上增加传输的数据量。
例如:
<?php
$str = '中文';
echo json_encode($str);
//"\u4e2d\u6587"
php5.4开始
echo json_encode($str, JSON_UNESCAPED_UNICODE);
//"中文"
php5.4让json更懂中文!
5.4之前不进行unicode转码,有3种方法处理:
PHP5.4中json_encode中文转码的变化让json更懂中文
但其实前两种方式是会导致问题,在一些特殊的情况下。如下例:
function myjson($code) {
$code = json_encode(urlencodeAry($code));
return urldecode($code);
}
function urlencodeAry($data) {
if(is_array($data)) {
foreach($data as $key=>$val) {
$data[$key] = urlencodeAry($val);
}
return $data;
} else {
return urlencode($data);
}
}
$test = array (
0 => '"大连周水子机场"→人民路',
1 => '运营时间:5:10~21:00 票价:16元 发车间隔20分钟一班,客满随时发车',
);
/*
通过常规则的json_encode|json_decode来编解码
["\"\u5927\u8fde\u5468\u6c34\u5b50\u673a\u573a\"\u2192\u4eba\u6c11\u8def","\u8fd0\u8425\u65f6
\u95f4\uff1a5\uff1a10\uff5e21\uff1a00 \u7968\u4ef7\uff1a16\u5143 \u53d1\u8f66\u95f4\u969420
\u5206\u949f\u4e00\u73ed\uff0c\u5ba2\u6ee1\u968f\u65f6\u53d1\u8f66"]
array (
0 => '"大连周水子机场"→人民路',
1 => '运营时间:5:10~21:00 票价:16元 发车间隔20分钟一班,客满随时发车',
)
*/
$test1 = json_encode($test);
$test2 = json_decode($test1, TRUE);
echo $test1;
echo PHP_EOL;
var_export($test2);
echo PHP_EOL;
/*
通过myjson|json_decode来编解码,但是会出报错json_last_error返回(JSON_ERROR_SYNTAX === 4),
因为""大连周水子机场"→人民路"
[""大连周水子机场"→人民路","运营时间:5:10~21:00 票价:16元 发车间隔20分钟一班,客满随时发车"]
NULL
*/
$test1_1 = myjson($test);
$test2_1 = json_decode($test1_1, TRUE);
echo $test1_1;
echo PHP_EOL;
var_export($test2_1);
echo PHP_EOL;
/*
通过json_enco+pack|json_decode来编解码,保证不会对中文编码,但是会缺少运营时间数据和票价
["\"大连周水子机场\"→人民路","运营时间::~: 票价:元 发车间隔分钟一班,客满随时发车"]
array (
0 => '"大连周水子机场"→人民路',
1 => '运营时间::~: 票价:元 发车间隔分钟一班,客满随时发车',
)
*/
function replaceUni($str) {
return preg_replace("#\\\u([0-9a-f]+)#ie", "iconv('UCS-2', 'UTF-8', pack('H4', '\\1'))", $str);
}
$test1_2 = replaceUni(json_encode($test));
$test2_2 = json_decode($test1_2, TRUE);
echo $test1_2;
echo PHP_EOL;
var_export($test2_2);
echo PHP_EOL;
最后总结一句,推荐升级到PHP5.4,让PHP更懂中文!
分享到:
相关推荐
在php5.4以前做json_encode的时候中文会被unicode编码,中文都会... //”中文” php5.4让json更懂中文! 5.4之前不进行unicode转码,有3种方法处理: 但其实前两种方式是会导致问题,在一些特殊的情况下。如下例: 复制
在PHP编程语言中,`json_encode()` 和 `json_decode()` 是两个非常重要的函数,它们用于在PHP和JSON数据格式之间进行转换。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,因其易于人阅读和编写,...
通过理解`JSON_UNESCAPED_UNICODE`选项,并结合正确的编码设置,我们可以有效地在PHP中使用`json_encode`处理包含中文汉字的数据。同时,确保目标环境和交互语言的兼容性也是至关重要的。提供的PDF文档可能详细介绍...
在PHP中,`json_decode`和`json_encode`是两个非常关键的函数,用于将JSON字符串转换为PHP变量,以及将PHP变量转换为JSON字符串。这篇日志将深入探讨这两个函数的使用方法和注意事项。 ### `json_decode` 函数 `...
在讨论解决PHP中json_encode函数不兼容JSON_UNESCAPED_UNICODE参数的问题之前,首先我们需要了解json_encode函数以及JSON_UNESCAPED_UNICODE参数的作用。json_encode是PHP内置函数,它用于将PHP值转换为JSON格式的...
一、json_encode() 对变量进行JSON编码 语法:json_encode($value[,$options=0]) 注意: 1、$value为要编码的值,且该函数只对UTF8编码的数据有效; 2、options:由以下常量组成的二进制掩码:JSON_HEX_QUOT, ...
在PHP中,`json_encode`和`json_decode`是两个非常重要的函数,它们主要用于JSON(JavaScript Object Notation)数据格式的编码和解码。JSON是一种轻量级的数据交换格式,因其简洁、易读且易于机器解析而被广泛应用...
在PHP中,`json_decode()`和`json_encode()`是两个非常重要的函数,它们主要用于JSON(JavaScript Object Notation)数据格式的编码与解码。JSON是一种轻量级的数据交换格式,因其简洁、易于阅读和编写,同时也容易...
在PHP中,`json_encode`函数用于将PHP变量转换为JSON格式的字符串。例如,如果你有一个关联数组或对象,你可以使用`json_encode`将其转换为JSON,以便在前端使用。下面是一个简单的示例: ```php <?php $data = ...
在PHP和MySQL的世界里,处理汉字显示问题是一个常见的挑战,特别是在数据交互和JSON编码过程中。本文将深入探讨如何使用`json_encode`函数解决PHP从MySQL查询后汉字显示异常的问题。 首先,我们需要理解PHP的`json_...
本篇知识分享将详细解释在PHP中遇到json_encode中文乱码问题时的解决办法。 ### 1. JSON编码原理简述 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,基于文本,独立于语言,具有良好的可读性和互...
### JSON Decode 索引为数字时自动排序问题解析及解决方案 ...通过上述方案,可以有效地解决PHP中`json_decode`函数在处理数字索引时的自动排序问题,从而保证数据的准确性和业务逻辑的正常运行。
本篇文章将围绕“php中json_encode中文编码问题分析”这一主题,详细探讨如何解决JSON编码过程中中文字符被转换为Unicode编码的问题。 首先,我们需要明白json_encode函数的基本用法。json_encode是PHP中的内置函数...
在PHP中,JSON常用于与前端交互,传输数据。PHP 4.0版本虽然相对较旧,但仍然可以处理JSON数据,只是没有内置的`json_encode`和`json_decode`函数。这个"json for PHP4.0"的压缩包提供了一个在PHP 4.0环境下使用的...
用PHP的json_encode来处理中文的时候, 中文都会被编码, 变成不可读的, 类似”\u***”的格式,如果想汉字不进行转码,这里提供三种方法 1.升级PHP,在PHP5.4, 这个问题终于得以解决, Json新增了一个选项: JSON_...
像PHP中的json_encode() JSON.stringify()一样执行JSON.stringify() 。 安装 npm i json_encode --save 用法 var json_encode = require ( 'json_encode' ) ; var encoded = json_encode ( { something : 'нов...