频道栏目
首页 > 资讯 > 数组 > 正文

PHP数组传递给JavaScript以及json_encode的gbk中文乱码

16-01-06        来源:[db:作者]  
收藏   我要投稿

文章介绍了关于PHP数组传递给JavaScript以及json_encode的gbk中文乱码的解决 ,下面是创建JSON函数,这一段来自网上某一位大侠

  1. /************************************************************** 
  2.  * 
  3. *    使用特定function对数组中所有元素做处理 
  4. *    @param    string    &$array        要处理的字符串 
  5. *    @param    string    $function    要执行的函数 
  6. *    @return boolean    $apply_to_keys_also        是否也应用到key上 
  7. *    @access public 
  8. *************************************************************/ 
  9. function arrayRecursive(&$array, $function, $apply_to_keys_also = false) 
  10.     foreach ($array as $key => $value) { 
  11.         if (is_array($value)) { 
  12.             arrayRecursive($array[$key], $function, $apply_to_keys_also); 
  13.         } else { 
  14.             $array[$key] = $function($value); 
  15.         } 
  16.         if ($apply_to_keys_also && is_string($key)) { 
  17.             $new_key = $function($key); 
  18.             if ($new_key != $key) { 
  19.                 $array[$new_key] = $array[$key]; 
  20.                 unset($array[$key]); 
  21.             } 
  22.         } 
  23.     } 
  24. /************************************************************** 
  25.  * 
  26. *    将数组转换为JSON字符串(兼容中文) 
  27. *    @param    array    $array        要转换的数组 
  28. *    @return string        转换得到的json字符串 
  29. *    @access public 
  30. *************************************************************/ 
  31. function JSON($array) { 
  32.     arrayRecursive($array, 'urlencode', true); 
  33.     $json = json_encode($array); 
  34.     return urldecode($json); 
  35. 连接数据库取值给数组$array1 
  36.  代码如下 复制代码 
  37. $dbcnx = @mysql_connect ( "localhost", "root", "1234" ); 
  38. if (! $dbcnx) { 
  39.     echo ("Unable to connect to the " . "database server at this time."); 
  40.     exit (); 
  41. if (! @mysql_select_db ( "pms" )) { 
  42.     echo ("Unable to locate the joke " . "database at this time."); 
  43.     exit (); 
  44. mysql_query ( "SET NAMES 'GB2312'" ); 
  45.     $q=mysql_query("select * from ability where ALV = 1");  
  46.     while($row=mysql_fetch_array($q)){  
  47.      $array1[] = $row[AName]; 

数组array1传递到JavaScript给数组ability1

  1. <script type="text/javascript" src="JS/jquery-1.7.2.min.js"></script>
  2. <script type="text/javascript"> 
  3. var ability1=
  4. var a=eval("ability1"); 
  5. alert(a[0]); 
  6. </script>

另一种json中文乱码解决方法,如果是中文的话就要注意了,在网上找到一种解决方法:

  1. /* 处理json_encode中文乱码 */  
  2. $data = array ('game' => '冰火国度', 'name' => '刺之灵', 'country' => '冰霜国', 'level' => 45 );  
  3. echo json_encode ( $data );  
  4. echo "
    ";  
  5. $newData = array ();  
  6. foreach ( $data as $key => $value ) {  
  7. $newData [$key] = urlencode ( $value );  
  8. }  
  9. echo urldecode ( json_encode ( $newData ) );  
  10. ?> 
后来请教了别人,还可以用base64编码,不过base64编码不可以放在URL中,百度是这样解释的:标准的Base64并不适合直接放在URL里传输,因为URL编码器会把标准Base64中的“/”和“+”字符变为形如“%XX”的形式,而这些“%”号在存入数据库时还需要再进行转换,因为ANSI SQL中已将“%”号用作通配符。
相关TAG标签
上一篇:php删除数组中的空值或指定值操作
下一篇:php对数组元素去重复值
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站