本篇內容主要講解“如何解決php5.2 Json不能正確處理中文、GB編碼的問題”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“如何解決php5.2 Json不能正確處理中文、GB編碼的問題”吧!
php5.2新增的json功能是非常受歡迎的,但是經過測試發現,
json_encode對中文的處理是有問題的,
1.不能處理GB編碼,所有的GB編碼都會替換成空字符.
2.utf8編碼的中文被編碼成unicode編碼,相當于javascript的escape函數處理的結果.
復制代碼 代碼如下:
/*
為了能正確使用json,首先我們就應該在編碼上采用utf8編碼,然后再對json_encode的返回結果稍加處理就可以得到正確的結果了。
我寫了一個簡單的類,將這兩個函數包裝了一下,
**/
class Json{
public static function encode($str){
$code = json_encode($str);
return preg_replace("#\\\u([0-9a-f]+)#ie", "iconv('UCS-2', 'UTF-8', pack('H4', '\\1'))", $code);
}
public static function decode($str){
return json_decode($str);
}
}
//使用的時候
Json::encode($code);
Json::decode($code);
/**這樣可以正確處理utf8編碼的中文了。
PS:對于GB編碼的中文,我們可以在編碼時先轉成UTF8編碼,再進行編碼,解碼的時候再進行一個utf8 -> gb的轉換就可以了。
另外一般json_encode的結果我們是返回到客戶端來使用,我們其實還可以用javascript的unescape函數來對unicode編碼的中文進行解碼,從而還原成正確的中文。
或者用:$title = mb_convert_encoding($title, 'HTML-ENTITIES', $this->_outCharset);//任意編碼下都正常顯示
********/
到此,相信大家對“如何解決php5.2 Json不能正確處理中文、GB編碼的問題”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。