json_encode(jsonencode中文乱码)

本篇文章给大家谈谈json_encode,以及jsonencode中文乱码对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

php 中 json_encode 只保留 value

循芦仔环将每个数组的值装入一个新数组,然后将新数组转换成json格式即可实现。示例如下:

?php

header("Content-type:text/html;charset=utf-8;");

$str='[{"id":"弊兆1","数据1":"11","数据租哗租2":"12"},{"id":"2","数据1":"21","数据2":"22"},{"id":"3","数据1":"31","数据2":"32"}]';

$data=json_decode($str,true);

$arr=array();

foreach ($data as $key=$item){

    $arr[]=array_values($item);

    

}

print_r(json_encode($arr));

//[["1","11","12"],["2","21","22"],["3","31","32"]]

?

php json_encode使用中文不转码

PHP转JSON,中文会被转码成unicode,使用常量 JSON_UNESCAPED_UNICODE 可以使中文原样输入。

不使神没用 JSON_UNESCAPED_UNICODE

使用 JSON_UNESCAPED_UNICODE

Json在 5.4 还加入了: JSON_BIGINT_AS_STRING , JSON_PRETTY_PRINT , JSON_UNESCAPED_SLASHES 等顷仔选游乎纳项, 如果有兴趣, 大家可以参看: json_encode

其中有2个比较常用到的参数

JSON_UNESCAPED_UNICODE (中文不转为unicode ,对应的数字 256)

JSON_UNESCAPED_SLASHES (不转义反斜杠,对应的数字 64)

通常json_encode只能传入一个常量,如果同时使用2个常量怎么办?

JSON_UNESCAPED_UNICODE + JSON_UNESCAPED_SLASHES = 320

使用方法:json_encode($arr,320);即可完成同时使用2个常量。

PHP5.4才支持 JSON_UNESCAPED_UNICODE 这个参数,此参数是让中文字符在json_encode的时候不用转义,减少数据传输量。

[img]

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() 函数会使汉字不能正常显示

* 所以者伏早有了这个适用性比较广的函数 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[$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数据存储格式

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

如何让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([0-9a-f]{4})/i',

 喊信          create_function(

               '$matches',

               'return mb_convert_encoding(pack("H*", $matches[1]), "UTF-8", "UCS-2BE");'

           ),

           $str);

   }

   

   //使用方法

   $jsonStr = decodeUnicode(json_encode($data));

   //或者单独封装一个函数

   function _json_encode($data=array()){

       return decodeUnicode(json_encode($data));

   }

关于json_encode和jsonencode中文乱码的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

标签列表