問題:眾所周知使用json_encode可以方便快捷地將物件進行json編碼,但是如果物件的屬性中存在著中文,問題也就隨之而來了。json_encode會將中文轉換為unicode編碼,例如:'我'經過json_encode處理後變為'\u6211',最終的json中中文部分被替換為unicode編碼。我們要解決的就是將物件轉換為json並保證物件內部的中文在json中仍然是以正常的中文出現,現在看來只使用json_encode是不能達到目的的。
解決方法:先將類中的中文字段進行url編碼(urlencode),然後再對物件進行json編碼(jsonencode),最後url解碼(urldecode)json,即最終的json,裡面的中文依舊是那個中文,完成我們想要的效果
<?php
//1.將陣列、物件轉為json格式(陣列、物件都不包含中午)
$arr=array('a'=>'a','b'=>'b'); //string '' (length=17)
var_dump(json_encode($arr));
class person
public function getname()
protected function getlover()
private function getmoney()
}$zhangsan=new person('zhagnsan','9999999','beautiful grils');
//只會將類中public屬性轉為json格式
var_dump(json_encode($zhangsan)); //string '' (length=19)
//對於陣列或是物件包含中文,json_encode會將中文轉換為unicode編碼,
//解決方法:先將類或是陣列中的中文字段進行url編碼(urlencode),然後再對物件或是陣列進行json編碼(jsonencode),最後url解碼(urldecode)json,即最終的json
$arr=array('ename'=>'dqs','cname'=>'你猜啊');
var_dump(json_encode($arr)); //中文,出現亂碼,string '' (length=44)
$arr['cname']=urlencode($arr['cname']);
$arr_json=urldecode(json_encode($arr));
var_dump($arr_json); //string '' (length=35)
//3.補充知識,檢視字元編碼方式以及轉碼
$name="dsq,你好啊";
//iconv_get_encoding()獲取當前頁面的編碼資訊
var_dump(mb_detect_encoding($name)); //utf-8
$name=iconv("utf-8","gb2312//ignore",$name);
var_dump(mb_detect_encoding($name)); //utf-8
//思考,為什麼將utf-8編碼轉為gb2312後還是utf-8呢?
檢視字串編碼mb_detect_encoding
//echo mb_detect_encoding($arr['cname']);
//$newdata=iconv("gb2312","utf-8//ignore",$data);
php中文亂碼問題
用php讀取檔案時經常遇到中文亂碼的問題,中文亂碼一般是因為編碼設定問題,主要分兩種情況 用php上傳檔案時,先將檔案上傳到臨時資料夾 在配置檔案中設定,如果沒有設定採用預設路徑 再將臨時檔案移動到目標資料夾下,如果上傳檔案的檔名為中文,儲存檔案時可能變為亂碼,解決辦法 在移動臨時檔案之前新增編碼轉...
PHP中文亂碼問題
a.首先說下html中文亂碼問題的解決方法。比如有個index.html的頁面 這裡是指真正的靜態頁面,修改伺服器的 偽靜態的請看方案b 1.在head標籤裡面加入這句 view plaincopy to clipboardprint?2.將檔案的編碼存為utf 8.記事本或editplus等編輯器...
php中文亂碼問題
在實際程式設計中經常遇到一些中文編碼的問題,即便已經用來指定了編碼方式,有時也會產生中文亂碼,後來經過實際操作絕得一下三種方式比較可靠 1 如果是單純的輸出可以用iconv函式 國際化字元支援。例如用,echo iconv utf 8 utf 8 曹志攀 其實iconv是php的字元轉換函式,第乙個...