程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> json_encode數組出現unicode \uxxxx的解決方案

json_encode數組出現unicode \uxxxx的解決方案

編輯:關於PHP編程

端午和上個周末做的微博應用送大禮中設計到ajax返回json的數據格式中,我沒有完全使用PHP默認的json_encode來編碼,因為這樣編碼出來的是unicode編碼的,也就是\u的編碼,雖然unicode編碼可以在不同的頁面中編碼不會出現亂碼問題。但是一個漢字編碼成unicode會變成\u+4個字符,這樣在字符長度上要比漢字多。

因為我的php文件和html聲明中都是使用的UTF-8,不會出現編碼亂碼問題,所以就放棄了直接使用json_encode的方法,而是把漢字先urlencode然後再使用json_encode,json_encode之後再次使用urldecode來解碼,這樣編碼出來的json數組中的漢字就不會出現unicode編碼了~

代碼如下

//默認為:{"test":"\u6211\u662f\u6d4b\u8bd5"}
$array = array(
'test'=>urlencode("我是測試")
);
$array = json_encode($array);
echo urldecode($array);
//{"test":"我是測試"}

此舉主要是為了節省傳輸字符數,因為我的送大禮默認會引入幾百個好友信息,對於數據的流量還是比較大的~所以采用漢字傳輸要比unicode字符編碼傳輸要節省帶寬~而且處理好了頁面編碼問題,不會出現亂碼現象。

json_encode出null的問題
如果文檔編碼或者字符串編碼(例如UTF-8抓取了一個GBK頁面)為非UTF-8,就會出現json_encode編碼失敗的問題,變現為輸出漢字為null。

解決的方法就是在json_encode之前用iconv函數將漢字轉為UTF-8。

TBCompressor的壓縮文件的編碼
TBCompressor是淘寶UED團隊修改的YUICompressor,可以支持將js、css中的漢字轉為unicode編碼,如果js文件中出現的漢字太多,壓縮之後反而會出現體積變大的問題,例如一個js是全國省市縣的地名數組,這樣就要通過修改TBCompressor配置來解決~
我們可以通過修改TBCompressor的cmd文件,不使用native2ascii就可以解決,這樣還可以在沒裝JDK只有JRE的電腦上使用TBCompressor。當然如果你要壓縮的js、css文件是UTF-8編碼的就需要修改一下TBCompressor中的charset為UTF-8。.

說著說著扯遠了,打完收工~

原文:http://www.js8.in/697.html

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved