json_encode(json_encode在编码字符串时会自动加上双引号,怎么能去掉)
本文目录
- json_encode在编码字符串时会自动加上双引号,怎么能去掉
- PHP中json_encode返回的值无法被前端识别
- json_encode的函数定义
- json_encode的介绍
- php 中 json_encode 只保留 value
- PHP中json_encode中文乱码问题
- 如何让php jsonencode 不转义unicode
- json_encode怎么返回多个值
- json_encode的解决方法
json_encode在编码字符串时会自动加上双引号,怎么能去掉
实际应用中,当有中文字符时,当直接使用json_encode() 函数会使汉字编码成”\u***”的形式,自从php5.4起 已经解决这个问题,使用以下方法解决汉字被编码的问题,json_encode(“中文“, JSON_UNESCAPED_UNICODE)
PHP中json_encode返回的值无法被前端识别
你可以尝试两个办法:
1- 前端把dataType: ’json’改成 dataType: ’jsonp’
2- 后端在 echo 前使用命令 header(’Content-type:text/json’) 可能还额外需要 header(’char-set:utf-8’);
json_encode的函数定义
stringjson_encode(mixed$value , int $options = 0 ] )
返回 value 值的JSON形式 待编码的 value ,除了resource 类型之外,可以为任何数据类型
该函数只能接受UTF-8 编码的数据(译注:指字符/字符串类型的数据) 编码成功则返回一个以 JSON 形式表示的string或者在失败时返回FALSE。
json_encode的介绍
实际应用中,当有中文字符时,当直接使用json_encode() 函数会使汉字编码成”\u***”的形式,自从php5.4起 已经解决这个问题,使用以下方法解决汉字被编码的问题,json_encode(中文, JSON_UNESCAPED_UNICODE)
php 中 json_encode 只保留 value
循环将每个数组的值装入一个新数组,然后将新数组转换成json格式即可实现。示例如下:
《?php
header(“Content-type:text/html;charset=utf-8;“);
$str=’’;
$data=json_decode($str,true);
$arr=array();
foreach ($data as $key=》$item){
$arr=array_values($item);
}
print_r(json_encode($arr));
//
?》
PHP中json_encode中文乱码问题
php 中使用 json_encode() 内置函数(php 》 5.2)可以使用得 php 中数据可以与其它语言很好的传递并且使用它。这个函数的功能是将数值转换成json数据存储格式
$arr = array (’a’=》1,’b’=》2,’c’=》3,’d’=》4,’e’=》5);
echo json_encode($arr);
//结果
//{“a“:1,“b“:2,“c“:3,“d“:4,“e“:5}
/*
下面看一款json_encode中文乱码问题
解决方法是用urlencode()函数处理以下,在json_encode之前,把所有数组内所有内容都用urlencode()处理一下,然用json_encode()转换成json字符串,最后再用urldecode()将编码过的中文转回来
*/
function arrayrecursive(&$array, $function, $apply_to_keys_also = false)
{
static $recursive_counter = 0;
if (++$recursive_counter 》 1000) {
die(’possible deep recursion attack’);
}
foreach ($array as $key =》 $value) {
if (is_array($value)) {
arrayrecursive($array, $function, $apply_to_keys_also);
} else {
$array = $function($value);
}
if ($apply_to_keys_also && is_string($key)) {
$new_key = $function($key);
if ($new_key != $key) {
$array;
unset($array);
}
}
}
$recursive_counter--;
}
/**************************************************************
*
* 将数组转换为json字符串(兼容中文)
* @param array $array 要转换的数组
* @return string 转换得到的json字符串
* @access public
*
*************************************************************/
function json($array) {
arrayrecursive($array, ’urlencode’, true);
$json = json_encode($array);
return urldecode($json);
}
$array = array
(
’name’=》’希亚’,
’age’=》20
);
echo json($array);
//应用实例
$servname=“localhost“;
$sqlservname=“root“;
$sqlservpws=“123456“;
$sqlname=“lock1“;
$db=mysql教程_connect($servname,$sqlservname,$sqlservpws) or die(“数据库教程连接失败“);
mysql_select_db($sqlname,$db);
$sql = “select * from t_operater“;
$result =mysql_query($sql);
$rows = mysql_num_rows($result);
while($obj = mysql_fetch_object($result))
{
$arr = $obj;
}
echo ’({“total“:“’.$rows.’“,“results“:’.json_encode($arr).’})’;
如何让php jsonencode 不转义unicode
方法有两种
1:php版本大于等于5.4,在使用json_encode的时候加入第二个参数JSON_UNESCAPED_UNICODE:如
//这样使用中文可不会被转义
$jsonStr = json_encode($data,JSON_UNESCAPED_UNICODE);
2:如果php版本小于5.4,可以使用这种方法,对unicode码再进行解码,解码函数如下:
/**
* 因php版本小于 5.4
* decodeUnicode 对中文编码unicode进行反转义为汉字
* @param $str json字符串
* @return 转义后的json字符串
*/
function decodeUnicode($str)
{
return preg_replace_callback(’/\\\\u({4})/i’,
create_function(
’$matches’,
’return mb_convert_encoding(pack(“H*“, $matches), “UTF-8“, “UCS-2BE“);’
),
$str);
}
//使用方法
$jsonStr = decodeUnicode(json_encode($data));
//或者单独封装一个函数
function _json_encode($data=array()){
return decodeUnicode(json_encode($data));
}
json_encode怎么返回多个值
1,可以用ajaxReturn来返回json数据。直接返回数组,如下:
public function getTop()
{
$flag = I(’flag’);
$arr = array();
$item = ’那n狠美100’;
$item = ’那妞狠美100’;
$item = ’99999’;
$arr = $item;
$item = ’永恒传说’;
$item = ’永恒传说’;
$item = ’45572’;
$arr = $item;
$item = ’坚强的馒头’;
$item = ’坚强的馒头’;
$item = ’38969’;
$arr = $item;
$item = ’叮当猫儿’;
$item = ’叮当猫儿’;
$item = ’37640’;
$arr = $item;
$this-》ajaxReturn($arr,’json’);
}
2,用你说的那种方式echo die(json_encode($arr)),如下:
public function getTop()
{
$flag = I(’flag’);
$arr = array();
$item = ’那n狠美100’;
$item = ’那妞狠美100’;
$item = ’99999’;
$arr = $item;
$item = ’永恒传说’;
$item = ’永恒传说’;
$item = ’45572’;
$arr = $item;
$item = ’坚强的馒头’;
$item = ’坚强的馒头’;
$item = ’38969’;
$arr = $item;
$item = ’叮当猫儿’;
$item = ’叮当猫儿’;
$item = ’37640’;
$arr = $item;
echo die(json_encode($arr));
}
3,前台接收数据:
success:function(data),这个回掉里data就是返回值,你可以用console.dir(data)查看
4,明白了吧,把结果集用数组接收,用json格式返回。
json_encode的解决方法
在json_encode() 函数 使用参数:JSON_UNESCAPED_UNICODE
json_encode($arr, JSON_UNESCAPED_UNICODE); 也可以尝试使用这个简短的方法:
function jsonEncodeWithCN($data) {
return preg_replace(/\\\u({4})/ie, iconv(’UCS-2BE’, ’UTF-8’, pack(’H4’, ’$1’)), json_encode($data));
}
如果是php5.4以前的版本使用以下方法 《?php
* 处理json_encode() 不支持中文的情况
*
* 实际应用中,当有中文字符时,当直接使用json_encode() 函数会使汉字不能正常显示
* 所以有了这个适用性比较广的函数 ch_json_encode()来解决这个问题
*
* charset: UTF-8
* create date: 2012-7-8
* @author Zhao Binyan
* @copyright (C) 2011-2012 itbdw
*//**
* 处理 json_encode() 不支持中文的情况
*
* @param array|object $data
* @return array|object
*/
function ch_json_encode($data) {
/**
* 将中文编码
* @param array $data
* @returnstring
*/
function ch_urlencode($data) {
if (is_array($data) || is_object($data)) {
foreach ($dataas$k =》 $v) {
if (is_scalar($v)) {
if (is_array($data)) {
$data = urlencode($v);
} elseif (is_object($data)) {
$data-》$k =urlencode($v);
}
} elseif (is_array($data)) {
$data = ch_urlencode($v);//递归调用该函数
} elseif (is_object($data)) {
$data-》$k = ch_urlencode($v);
}
}
}
return$data;
}
$ret = ch_urlencode($data);
$ret =json_encode($ret);
return urldecode($ret);
}
注意,字符编码必须是 utf-8 。
使用json_encode
Json 做为一种轻量级的数据交换格式,开始受到青睐,有与 XML 抢地盘的风头。而让人高兴的是,php也把 json 序列化数据的功能内置成函数了,这让想使用json的 PHPCoder 备感方便。 美中不足的是,json_encode / json_decode 系列函数只有在 php5.2 以上才有。这让立志开发兼容性强的PHP系统的coder很头痛。 幸好,已经有人把 json 的方法封装成 php4.x 系列甚至更低的版本都可以执行的类了。这里要先谢谢先驱了。让我们可以踩在巨人的肩膀上走向成功。
使用方法:
if( function_exists(json_encode) ) { return json_encode($phparr); } else { require_once ROOT.include/json.class.php; $json = new Services_JSON; return $json-》encode($phparr); } ?》
本文相关文章:
魔兽世界战网更新 一直卡在获取编码表上几个小时没反应,有什么解决方法?战网更新一直卡在0%怎么办
2024年6月6日 11:07
模式识别算法(如何用C\C++编码实现各种机器学习,模式识别,深度学习算法)
2024年6月5日 23:14
更多文章:
华硕zenbook pro(华硕zenbook pro ux501jw4720笔记本可以接网线吗)
2024年9月13日 19:00
联想台式机bios恢复出厂设置(联想电脑bios如何恢复出厂设置)
2024年3月5日 19:50
神舟笔记本电脑上海维修服务网点(神舟笔记本自动重启在上海物资大厦哪能修)
2023年12月18日 16:00
国内有哪些比较有名的电脑厂家?中国最大的品牌电脑生产厂家有几个
2024年1月13日 05:40
联想3000左右的电脑哪一款好(联想电脑3000到4000左右的哪款比较好)
2024年9月2日 19:00
笔记本键盘膜推荐(挑选苹果MacBook电脑键盘膜,找哪好)
2024年2月19日 21:20
戴尔790台式机参数(咨询下上海戴尔经销商,戴尔台式机optiplex780和790有哪些区别呢)
2023年11月13日 23:40
戴尔售后加装硬盘(您好,请问在保修期内加装电脑硬盘会影响到戴尔提供的保修服务吗谢谢!)
2024年8月29日 10:10
华硕售后垃圾(华硕笔记本键盘坏了不给保修,真垃圾!垃圾售后!)
2024年9月19日 10:20
戴尔xps13网卡驱动(戴尔xps134393无线上网问题新笔记本能看到无线网信号满格,就是连不上网,手机上网没有问题)
2024年9月10日 22:00