json解析解决方案
Jun 13, 2016 pm 01:35 PM
array
function
json
quot
return
json解析
问一个问题啊 我已经解决json_encode 不能传中文的问题 在gbk编码的情况下 但是我怎么用json_decode()函数解析不出来啊
- PHP code
<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --> 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); $json = urldecode($json); $json = str_replace("\"false\"","false",$json); $json = str_replace("\"true\"","true",$json); return $json; } function get_goodbook() { $sql = "select * from `wiki_doc`"; $data=$this->db->getAll($sql); return JSON($data); }
登录后复制
------解决方案--------------------
json_encode 可以传中文啊,传之前iconv就是了伐.
------解决方案--------------------
你把内容作了 url 编码,对方(比如js)拿到后如何知道需要解码呀?
你应该在 arrayRecursive 函数里做 iconv('gbk', 'utf-8', $value) 编码转换
------解决方案--------------------
一般要这么写,你自己再封装一下
- PHP code
$ar = array ( '这里是 GBK 编码的数据', array( '这是一个测试', '这还是一个测试', ), ); echo $s = json_encode( array_map('gb2utf',$ar)); print_r(array_map('utf2gb', json_decode($s))); function gb2utf($v) { if(! is_array($v)) return iconv('gbk', 'utf-8', $v); foreach($v as &$t) $t = gb2utf($t); return $v; } function utf2gb($v) { if(! is_array($v)) return iconv('utf-8', 'gbk', $v); foreach($v as &$t) $t = utf2gb($t); return $v; } <br><font color="#e78608">------解决方案--------------------</font><br>首先将数组转成utf-8的就可以编码中文了,没必要去写很多其它代码 <div class="clear"> </div>
登录后复制
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门文章
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前
By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
4 周前
By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前
By 尊渡假赌尊渡假赌尊渡假赌
击败分裂小说需要多长时间?
3 周前
By DDD
R.E.P.O.保存文件位置:在哪里以及如何保护它?
3 周前
By DDD

热门文章
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前
By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
4 周前
By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前
By 尊渡假赌尊渡假赌尊渡假赌
击败分裂小说需要多长时间?
3 周前
By DDD
R.E.P.O.保存文件位置:在哪里以及如何保护它?
3 周前
By DDD

热门文章标签

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

使用golang中的json.MarshalIndent函数将结构体转换为格式化的JSON字符串
