zoukankan      html  css  js  c++  java
  • json_encode 中文解决方法

    json 是一个很好的数据结构现在已经广泛用在网络数据传输上

    php 自身待了两个和json 相关的函数
    json_encode  和 json_decode

    这两个函数的具体用法 网上有很多相关的文章
    本文主要介绍 用json_encode 时 中文无法转换的解决方案

    本文假设 文件所用的编码为gb2312;

    先写出所需的数组


    <?php
    $json 
    = array (
      
    => 
      array (
        
    'id' => '13'
    ,
        
    'name' => '乒乓球'
    ,
      ),
      
    => 
      array (
        
    'id' => '17'
    ,
        
    'name' => '篮球'
    ,
      )
    )
    ?>


    如果直接用函数json_encode


     <?php

        
    echo json_encode($json
    );
    ?>


    结果为:


    <?php
    [{"id":"13","name":null},{"id":"13","name":null
    }]
    ?>



    可以看到汉字没有被转义  都为null

    这是因为json仅仅转义encoding编码

    故上面语句应该先转换编码


    <?php

            
    foreach ($ajax as $key=>$val
    )
            {
                
    $ajax[$key]['name']    = urlencode($val['name'
    ]);
            }
            echo 
    json_encode($json
    );

    ?>


    客户端js代码


    <script  type="text/javascript">
    function getsort(obj)
    {
                $.ajax(
                {
                    type : "GET",    
                    url : "<?=$this->baseUrl?>/index/getajax",
                    data : "c=" obj.value,
                    success : function(json)
                    {    
                        var json=eval(json);
                    
                        var html = '<select>';
                        $.each(json, function(k)
                        {
                            html  = '<option value="'   json[k]['id']   '">'   decodeURI(json[k]['name'])   '</option>';
                        });
                        html  ="</select>";
                        $('#sort').html(html);
                    }
                }
                )
    }
    </script>



    用上面的代码js会报错 说编码不符合标准

    原因是因为js 中decodeURI 仅仅支持utf8 转码 
    所以 
    php
    代码应该为下面的代码


    <?php

            
    foreach ($ajax as $key=>$val
    )
            {
                
    $ajax[$key]['name']    = urlencode(iconv('gb2312','utf-8',$val['name'
    ]));
            }
            echo 
    json_encode($json
    );

    ?>
  • 相关阅读:
    翻转单词顺序列
    和为S的两个数字
    单例模式
    python利用pyinstaller打包常用打包命令
    python 3.8 使用pymssql 向SQL Server插入数据不成功原因
    PyQt5(designer)入门教程
    PyQt5中文教程
    scrapy 图片爬取 多层多页 保存不同的文件夹 重命名full文件夹
    安装Python + PyCharm + PyQt5配套设置
    python用pymysql模块操作数据库MySQL,实现查增删改
  • 原文地址:https://www.cnblogs.com/ymj0906/p/2587975.html
Copyright © 2011-2022 走看看