首页编程json_encode(json_encode的解决方法)

json_encode(json_encode的解决方法)

编程之家2023-11-01105次浏览

你是否想了解更多关于json_encode和json_encode的解决方法的知识?在本文中,小编将为您详细介绍这两个话题,帮助您更好地理解。

json_encode(json_encode的解决方法)

json_encode的解决方法

在json_encode()函数使用参数:JSON_UNESCAPED_UNICODE

json_encode($arr, JSON_UNESCAPED_UNICODE);也可以尝试使用这个简短的方法:

function jsonEncodeWithCN($data){

return preg_replace(/\\\u([0-9a-f]{4})/ie, iconv('UCS-2BE','UTF-8', pack('H4','$1')), json_encode($data));

}

如果是php5.4以前的版本使用以下方法<?php

json_encode(json_encode的解决方法)

*处理json_encode()不支持中文的情况

*

*实际应用中,当有中文字符时,当直接使用json_encode()函数会使汉字不能正常显示

*所以有了这个适用性比较广的函数 ch_json_encode()来解决这个问题

*

* charset: UTF-8

json_encode(json_encode的解决方法)

* 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[$k]= urlencode($v);

} elseif(is_object($data)){

$data->$k=urlencode($v);

}

} elseif(is_array($data)){

$data[$k]= 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);}?>

如何正确运用PHP json_encode函数进行中文转换

在 php中使用 json_encode()内置函数(php>5.2)可以使用得 php中数据可以与其它语言很好的传递并且使用它。这个函数的功能是将数值转换成json数据存储格式,但是转换后的中文会变成Unicode编码。\x0d\x0a[php] view plaincopyprint?\x0d\x0a'希亚', \x0d\x0a'Age'=>20 \x0d\x0a); \x0d\x0a \x0d\x0a$jsonencode= json_encode($arr); \x0d\x0aecho$jsonencode; \x0d\x0a?> \x0d\x0a程序运行结果如下:\x0d\x0a[php] view plaincopyprint?\x0d\x0a{"Name":null,"Age":20} \x0d\x0ajson_encode函数中中文被编码成 null了,Google了一下,很简单,为了与前端紧密结合,Json只支持 utf-8编码,我认为是前端的 Javascript也是 utf-8的原因。\x0d\x0a[php] view plaincopyprint?\x0d\x0aiconv('gb2312','utf-8','这里是中文标题'), \x0d\x0a'body'=>'abcd...' \x0d\x0a); \x0d\x0a \x0d\x0aecho json_encode($array); \x0d\x0a?> \x0d\x0a这个程序的运行结果为:\x0d\x0a[php] view plaincopyprint?\x0d\x0a{"title":"\u8fd9\u91cc\u662f\u4e2d\u6587\u6807\u9898","body":"abcd..."} \x0d\x0a数组中所有中文在json_encode之后都不见了或者出现\u2353等。解决方法是用urlencode()函数处理以下,在json_encode之前,把所有数组内所有内容都用urlencode()处理一下,然用json_encode()转换成json字符串,最后再用urldecode()将编码过的中文转回来。\x0d\x0a[php] view plaincopyprint?\x0d\x0a 1000){ \x0d\x0a die('possible deep recursion attack'); \x0d\x0a} \x0d\x0a foreach($array as$key=>$value){ \x0d\x0a if(is_array($value)){ \x0d\x0a arrayRecursive($array[$key],$function,$apply_to_keys_also); \x0d\x0a} else{ \x0d\x0a$array[$key]=$function($value); \x0d\x0a} \x0d\x0a \x0d\x0a if($apply_to_keys_also&& is_string($key)){ \x0d\x0a$new_key=$function($key); \x0d\x0a if($new_key!=$key){ \x0d\x0a$array[$new_key]=$array[$key]; \x0d\x0a unset($array[$key]); \x0d\x0a} \x0d\x0a} \x0d\x0a} \x0d\x0a$recursive_counter--; \x0d\x0a} \x0d\x0a \x0d\x0a/************************************************************** \x0d\x0a* \x0d\x0a*将数组转换为JSON字符串(兼容中文) \x0d\x0a*@param array$array要转换的数组 \x0d\x0a*@return string转换得到的json字符串 \x0d\x0a*@access public \x0d\x0a* \x0d\x0a*************************************************************/ \x0d\x0afunction JSON($array){ \x0d\x0a arrayRecursive($array,'urlencode', true); \x0d\x0a$json= json_encode($array); \x0d\x0a return urldecode($json); \x0d\x0a} \x0d\x0a \x0d\x0a$array= array \x0d\x0a( \x0d\x0a'Name'=>'希亚', \x0d\x0a'Age'=>20 \x0d\x0a); \x0d\x0a\x0d\x0aecho JSON($array); \x0d\x0a?> \x0d\x0a这次成功了,运行结果如下:\x0d\x0a[php] view plaincopyprint?\x0d\x0a{"Name":"希亚","Age":"20"}

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[$key],$function,$apply_to_keys_also);

} else{

$array[$key]=$function($value);

}

if($apply_to_keys_also&& is_string($key)){

$new_key=$function($key);

if($new_key!=$key){

$array[$new_key]=$array[$key];

unset($array[$key]);

}

}

}

$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).'})';

END,本文到此结束,如果可以帮助到大家,还望关注本站哦!

数据库学习(初学数据库应该从何学起)电商怎么做营销推广?电商推广怎么做