DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> JavaScript入門知識 >> AJAX入門 >> AJAX詳解 >> php5.2 Json不能正確處理中文的解決辦法
php5.2 Json不能正確處理中文的解決辦法
編輯:AJAX詳解     

PHP5.2新增的JSon功能是非常受歡迎的,但是經過測試發現,
JSon_encode對中文的處理是有問題的,
1.不能處理GB編碼,所有的GB編碼都會替換成空字符.
2.utf8編碼的中文被編碼成unicode編碼,相當於Javascript的escape函數處理的結果.

為了能正確使用json,首先我們就應該在編碼上采用utf8編碼,然後再對JSon_encode的返回結果稍加處理就可以得到正確的結果了。
我寫了一個簡單的類,將這兩個函數包裝了一下,

  1. class JSon{  
  2.  public static function encode($str){  
  3.  $code = JSon_encode($str);  
  4.  return preg_replace("#\\\u([0-9a-f]+)#IE", "iconv('UCS-2', 'UTF-8', pack('H4', '\\1'))", $code);  
  5.  }  
  6.  
  7.  public static function decode($str){  
  8.  return JSon_decode($str);  
  9.  }  

使用的時候

  1. JSon::encode($code);  
  2. JSon::decode($code); 

這樣可以正確處理utf8編碼的中文了。

PS:對於GB編碼的中文,我們可以在編碼時先轉成UTF8編碼,再進行編碼,解碼的時候再進行一個utf8 -> gb的轉換就可以了。
另外一般JSon_encode的結果我們是返回到客戶端來使用,我們其實還可以用Javascript的unescape函數來對unicode編碼的中文進行解碼,從而還原成正確的中文。

或者用:$title = mb_convert_encoding($title, 'Html-ENTITIES', $this->_outCharset);//任意編碼下都正常顯示

 

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved