多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

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

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

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

文章介紹了關于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" 
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 男女激情视频软件 | 欧美日本高清一本二本三本 | 日韩色视频一区二区三区亚洲 | 欧美一级毛片图 | 成人eeuss影院在线观看 | 日本xxxxx黄区免费看动漫 | 高清完整视频在线播放 | 樱花aⅴ一区二区三区四区 影视精品网站入口 | 欧美一二区视频 | 欧美三级在线观看视频 | 久久国产精品久久久久久久久久 | 欧美13一14娇小性视频 | 久久视频精品36线视频在线观看 | 春暖花开亚洲性无区一区二区 | 国内自拍视频在线观看 | 福利视频欧美一区二区三区 | 国产性老妇女做爰在线 | 欧美一区二区在线播放 | 日本肥老太成熟 | 亚洲不卡在线播放 | 日本一区二区成人教育 | 国产无卡一级毛片aaa | 最新国产中文字幕 | 日本免费一级片 | 国产人做人爱免费视频 | videos雌雄同体xxxx视频 | 国产欧美精品国产国产专区 | 欧美天天视频 | 亚洲国产高清在线精品一区 | 国内精品伊人久久 | 无遮挡很爽很污很黄很色的网站 | 天堂在线视频精品 | 看毛片的网站 | 午夜爽爽爽男女免费观看hd | 日韩精品一区二区三区小说 | 成人免费视频在线看 | 午夜色综合 | 高清欧美色欧美综合网站 | 久久久无码精品亚洲日韩按摩 | 性欧美24videos | bbw老妇性hd|