zoukankan      html  css  js  c++  java
  • PHP json_encode函数中需要注意的地方

    在php中使用 json_encode() 内置函数可以使用得php中的数据更好的与其它语言传递与使用。

    这个函数的功能是将数组转换成json数据存储格式:

    1 <?php
    2     $arr=array('name'=>'Balla_兔子','age'=>22);
    3     echo json_encode($arr);
    4 ?>

    输出结果:

    1 {"name":"","age":22}

    json_encode函数中中文被编码成null了,查了下资料,很简单,为了与前端紧密结合,json只支持utf-8编码。

    我们可以用iconv函数转换下编码:

    1 string iconv ( string $in_charset , string $out_charset , string $str )
    2 Performs a character set conversion on the string str from in_charset to out_charset.//从in_charset编码转为out_charset,str为转换内容
    1 <?php
    2     $arr=array('name'=>iconv('gbk', 'utf-8', 'Balla_兔子'),'age'=>22);
    3     echo json_encode($arr);
    4 ?>

    输出结果:

    1 {"name":"Balla_u934fu65bfu74d9","age":22}

    在数组里所有中文在json_encode之后都不见了或者出现u934fu65bf等。

    解决方法是用urlencode()函数处理下,在json_encode之前,把所有数组内所有内容都用urlencode()处理,然用json_encode()转换成json字符串,最后再用urldecode()将编码过的中文转回来。

    1  string urlencode ( string $str ) //UrlEncode:将字符串以URL编码返回 返回值:字符串
     1 <?php
     2     
     3     $arr=array('name'=>urlencode('Balla_兔子'),'age'=>22);
     4     
     5     $json=json_encode($arr);
     6 
     7     $result=json_decode($json,true);//把json解码并转为数组
     8     
     9     echo urldecode($result['name']);
    10 
    11 ?>

    输出结果:

    1 Balla_兔子
  • 相关阅读:
    bzoj 1017 魔兽地图DotR
    poj 1322 chocolate
    bzoj 1045 糖果传递
    poj 3067 japan
    timus 1109 Conference(二分图匹配)
    URAL 1205 By the Underground or by Foot?(SPFA)
    URAL 1242 Werewolf(DFS)
    timus 1033 Labyrinth(BFS)
    URAL 1208 Legendary Teams Contest(DFS)
    URAL 1930 Ivan's Car(BFS)
  • 原文地址:https://www.cnblogs.com/lichenwei/p/3888586.html
Copyright © 2011-2022 走看看