首页 > php教程 > php手册 > php json_encode实现与中文乱码解决方法

php json_encode实现与中文乱码解决方法

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
发布: 2016-05-25 16:46:16
原创
1139 人浏览过

php 中使用 json_encode() 内置函数(php > 5.2)可以使用得 php 中数据可以与其它语言很好的传递并且使用它,这个函数的功能是将数值转换成json数据存储格式.

1

2

3

4

5

6

<?php

$arr = array (&#39;a&#39;=>1,&#39;b&#39;=>2,&#39;c&#39;=>3,&#39;d&#39;=>4,&#39;e&#39;=>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()将编码过的中文转回来.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

<?php

function arrayrecursive(&$array, $function, $apply_to_keys_also = false) {

    static $recursive_counter = 0;

    if (++$recursive_counter > 1000) {

        die(&#39;possible deep recursion attack&#39;);

    }

    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, &#39;urlencode&#39;, true);

    $json = json_encode($array);

    return urldecode($json);

}

$array = array(

    &#39;name&#39; => &#39;希亚&#39;,

    &#39;age&#39; => 20

);

echo json($array);

?>

登录后复制

应用实例:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

<?php

$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 &#39;({"total":"&#39; . $rows . &#39;","results":&#39; . json_encode($arr) . &#39;})&#39;;

?>

登录后复制

               
               

相关标签:
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
vim - windows下vi中文乱码
来自于 1970-01-01 08:00:00
0
0
0
中文乱码怎么办啊
来自于 1970-01-01 08:00:00
0
0
0
乱码
来自于 1970-01-01 08:00:00
0
0
0
git - SourceTree中文显示乱码
来自于 1970-01-01 08:00:00
0
0
0
中文乱码问题
来自于 1970-01-01 08:00:00
0
0
0
热门推荐
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板