日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > php教程 > PHP數組傳遞給JavaScript以及json_encode的gbk中文亂碼

PHP數組傳遞給JavaScript以及json_encode的gbk中文亂碼

來源:程序員人生   發布時間:2013-10-26 21:23:25 閱讀次數:3268次

文章介紹了關于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. *************************************************************/ 
  10. function arrayRecursive(&$array$function$apply_to_keys_also = false) 
  11.     foreach ($array as $key => $value) { 
  12.         if (is_array($value)) { 
  13.             arrayRecursive($array[$key], $function$apply_to_keys_also); 
  14.         } else { 
  15.             $array[$key] = $function($value); 
  16.         } 
  17.         if ($apply_to_keys_also && is_string($key)) { 
  18.             $new_key = $function($key); 
  19.             if ($new_key != $key) { 
  20.                 $array[$new_key] = $array[$key]; 
  21.                 unset($array[$key]); 
  22.             } 
  23.         } 
  24.     } 
  25. /************************************************************** 
  26.  * 
  27. *    將數組轉換為JSON字符串(兼容中文) 
  28. *    @param    array    $array        要轉換的數組 
  29. *    @return string        轉換得到的json字符串 
  30. *    @access public 
  31. * 
  32. *************************************************************/ 
  33. function JSON($array) { 
  34.     arrayRecursive($array'urlencode', true); 
  35.     $json = json_encode($array); 
  36.     return urldecode($json); 
  37. 連接數據庫取值給數組$array1 
  38.  代碼如下 復制代碼 
  39. $dbcnx = @mysql_connect ( "localhost""root""1234" ); 
  40. if (! $dbcnx) { 
  41.     echo ("Unable to connect to the " . "database server at this time."); 
  42.     exit (); 
  43. if (! @mysql_select_db ( "pms" )) { 
  44.     echo ("Unable to locate the joke " . "database at this time."); 
  45.     exit (); 
  46. mysql_query ( "SET NAMES 'GB2312'" ); 
  47.     $q=mysql_query("select * from ability where ALV = 1");  
  48.     while($row=mysql_fetch_array($q)){  
  49.      $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=<?php echo JSON($array1);?>; 
  4. var a=eval("ability1"); 
  5. alert(a[0]); 
  6. </script> 

另一種json中文亂碼解決方法,如果是中文的話就要注意了,在網上找到一種解決方法:

  1. <?php  
  2. /* 處理json_encode中文亂碼 */  
  3. $data = array ('game' => '冰火國度''name' => '刺之靈''country' => '冰霜國''level' => 45 );  
  4. echo json_encode ( $data );  
  5. echo "<br>";  
  6. $newData = array ();  
  7. foreach ( $data as $key => $value ) {  
  8. $newData [$key] = urlencode ( $value );  
  9. }  
  10. echo urldecode ( json_encode ( $newData ) );  
  11. ?> 
后來請教了別人,還可以用base64編碼,不過base64編碼不可以放在URL中,百度是這樣解釋的:標準的Base64并不適合直接放在URL里傳輸,因為URL編碼器會把標準Base64中的“/”和“+”字符變為形如“%XX”的形式,而這些“%”號在存入數據庫時還需要再進行轉換,因為ANSI SQL中已將“%”號用作通配符。

不過我的數據是要通過POST發送的,并不在HTTP 的head中,而在message-body里,所以不受影響。

json_encode 只能接受utf-8格式的數據

例如:'胥'經過json_encode處理后變為'u80e5',最終的json中中文部分被替換為unicode編碼。我們要解決的就是將對象轉換為json并保證對象內部的中文在json中仍然是以正常的中文出現,現在看來只使用json_encode是不能達到目的的.

我的解決方法:先將類中的中文字段進行url編碼(urlencode),然后再對對象進行json編碼(jsonencode),最后url解碼(urldecode)json,即最終的json,里面的中文依舊是那個中文! 測試代碼如下:

  1. <?php  
  2. class myClass {  
  3. public $item1 = 1;  
  4. public $item2 = '中文';  
  5. function to_json() {  
  6. //url編碼,避免json_encode將中文轉為unicode  
  7. $this->item2 = urlencode($this->item2);  
  8. $str_json = json_encode($this);  
  9. //url解碼,轉完json后將各屬性返回,確保對象屬性不變  
  10. $this->item2 = urldecode($this->item2);  
  11. return urldecode($str_json);  
  12. }  
  13. }  
  14. $c = new myClass();  
  15. echo json_encode($c);  
  16. echo '<br/>';  
  17. echo $c->to_json();  
  18. echo '<br/>';  
  19. echo json_encode($c);  
  20. echo '<br/>';  
  21. echo json_encode('胥');  
  22. ?> 

程序輸出結果:

  1. {"item1":1,"item2":"u4e2du6587"}  
  2. {"item1":1,"item2":"中文"}  
  3. {"item1":1,"item2":"u4e2du6587"}  
  4. "u80e5" 
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 在线看的av | 中文字幕第9页 | 精品国产伦一区二区三区免费 | 精品国产乱码久久久久久蜜臀 | 国产三级一区 | 亚洲国产一区在线观看 | 日韩视频在线播放 | 国产精品国产三级国产aⅴ浪潮 | 精品久久久久久久 | 欧美日韩不卡 | 国产专区一区二区 | 高清一区二区三区 | 黄色高清网站 | 91久久亚洲 | 国产精品久久久久9999 | 国产永久免费 | 中文字幕不卡在线观看 | 免费视频一区 | 日韩免费网站 | 伊人国产精品 | 欧美 日韩 中文字幕 | 成人在线观看视频网站 | 在线观看国产 | 黄色短视频在线播放 | 精品久| 国产精品视频免费看 | 老女人一级片 | 99在线视频免费观看 | 91精品国产综合久久福利不卡 | 日韩一级黄色毛片 | 国产一区二区视频在线播放 | 亚洲成人av一区二区 | 亚洲欧美日韩久久精品 | 日本精品在线视频 | 亚洲一区二区三区中文字幕 | 欧美精品在线一区 | 成人精品国产免费网站 | 激情综合色综合久久综合 | 久久福利网 | aaa免费看| 热99视频|