国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

php json_encode()函數中文編碼亂碼解決方法

2024-05-04 21:47:33
字體:
來源:轉載
供稿:網友

在我使用php json_encode()時,如果是英文或數字沒一點問題,但是用到中文是居然出現不可識別的中文亂碼了,下面看我解決json_encode中文亂碼方法。

在網上找到一種解決方法,代碼如下:

  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" 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 花垣县| 广汉市| 河曲县| 红安县| 明光市| 阳原县| 南部县| 阿荣旗| 海口市| 静乐县| 游戏| 永安市| 炎陵县| 长沙县| 株洲市| 元氏县| 宁安市| 福州市| 永康市| 印江| 云龙县| 凌海市| 徐水县| 蒲江县| 福海县| 庆元县| 通州市| 江油市| 南平市| 沐川县| 微山县| 永新县| 惠安县| 奇台县| 玛多县| 夹江县| 贵州省| 外汇| 扎兰屯市| 漾濞| 咸阳市|