json解析解决方案

WBOY
Freigeben: 2016-06-13 10:17:16
Original
882 Leute haben es durchsucht

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);    }
Nach dem Login kopieren


------解决方案--------------------
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>
Nach dem Login kopieren
Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!