php中json_encode中文編碼問(wèn)題分析
更新時(shí)間:2011年09月13日 19:52:52 作者:
眾所周知使用json_encode可以方便快捷地將對(duì)象進(jìn)行json編碼,但是如果對(duì)象的屬性中存在著中文,問(wèn)題也就隨之而來(lái)了。json_encode會(huì)將中文轉(zhuǎn)換為unicode編碼
例如:'胥'經(jīng)過(guò)json_encode處理后變?yōu)?\u80e5',最終的json中中文部分被替換為unicode編碼。我們要解決的就是將對(duì)象轉(zhuǎn)換為json并保證對(duì)象內(nèi)部的中文在json中仍然是以正常的中文出現(xiàn),現(xiàn)在看來(lái)只使用json_encode是不能達(dá)到目的的。
我的解決方法:先將類(lèi)中的中文字段進(jìn)行url編碼(urlencode),然后再對(duì)對(duì)象進(jìn)行json編碼(jsonencode),最后url解碼(urldecode)json,即最終的json,里面的中文依舊是那個(gè)中文!
測(cè)試代碼如下:
<?php
class myClass {
public $item1 = 1;
public $item2 = '中文';
function to_json() {
//url編碼,避免json_encode將中文轉(zhuǎn)為unicode
$this->item2 = urlencode($this->item2);
$str_json = json_encode($this);
//url解碼,轉(zhuǎn)完json后將各屬性返回,確保對(duì)象屬性不變
$this->item2 = urldecode($this->item2);
return urldecode($str_json);
}
}
$c = new myClass();
echo json_encode($c);
echo '<br/>';
echo $c->to_json();
echo '<br/>';
echo json_encode($c);
echo '<br/>';
echo json_encode('胥');
?>
程序輸出結(jié)果:
{"item1":1,"item2":"\u4e2d\u6587"}
{"item1":1,"item2":"中文"}
{"item1":1,"item2":"\u4e2d\u6587"}
"\u80e5"
希望本文起到拋磚引玉的作用,收集大家更好的解決方法……!
我的解決方法:先將類(lèi)中的中文字段進(jìn)行url編碼(urlencode),然后再對(duì)對(duì)象進(jìn)行json編碼(jsonencode),最后url解碼(urldecode)json,即最終的json,里面的中文依舊是那個(gè)中文!
測(cè)試代碼如下:
復(fù)制代碼 代碼如下:
<?php
class myClass {
public $item1 = 1;
public $item2 = '中文';
function to_json() {
//url編碼,避免json_encode將中文轉(zhuǎn)為unicode
$this->item2 = urlencode($this->item2);
$str_json = json_encode($this);
//url解碼,轉(zhuǎn)完json后將各屬性返回,確保對(duì)象屬性不變
$this->item2 = urldecode($this->item2);
return urldecode($str_json);
}
}
$c = new myClass();
echo json_encode($c);
echo '<br/>';
echo $c->to_json();
echo '<br/>';
echo json_encode($c);
echo '<br/>';
echo json_encode('胥');
?>
程序輸出結(jié)果:
復(fù)制代碼 代碼如下:
{"item1":1,"item2":"\u4e2d\u6587"}
{"item1":1,"item2":"中文"}
{"item1":1,"item2":"\u4e2d\u6587"}
"\u80e5"
希望本文起到拋磚引玉的作用,收集大家更好的解決方法……!
您可能感興趣的文章:
- 淺談php和js中json的編碼和解碼
- PHP學(xué)習(xí)散記_編碼(json_encode 中文不顯示)
- PHP中遇到BOM、<feff>編碼導(dǎo)致json_decode函數(shù)無(wú)法解析問(wèn)題
- php使用json_encode對(duì)變量json編碼
- php json中文編碼為null的解決辦法
- java解析php函數(shù)json_encode unicode 編碼問(wèn)題
- php5.2 Json不能正確處理中文、GB編碼的解決方法
- php實(shí)現(xiàn)json編碼的方法
- PHP自定義遞歸函數(shù)實(shí)現(xiàn)數(shù)組轉(zhuǎn)JSON功能【支持GBK編碼】
- PHP 實(shí)現(xiàn) JSON 數(shù)據(jù)的編碼和解碼操作詳解
相關(guān)文章
php中ftp_chdir與ftp_cdup函數(shù)用法
這篇文章主要介紹了php中ftp_chdir與ftp_cdup函數(shù)用法,以實(shí)例形式講述了PHP中的FTP目錄操作技巧,具有一定的借鑒價(jià)值,需要的朋友可以參考下2014-11-11
PHP使用三種方法實(shí)現(xiàn)數(shù)據(jù)采集
這篇文章主要介紹了PHP使用三種方法實(shí)現(xiàn)數(shù)據(jù)采集,對(duì)數(shù)據(jù)采集感興趣的同學(xué),可以參考下2021-04-04
php實(shí)現(xiàn)的簡(jiǎn)單美國(guó)商品稅計(jì)算函數(shù)
這篇文章主要介紹了php實(shí)現(xiàn)的簡(jiǎn)單美國(guó)商品稅計(jì)算函數(shù),涉及php數(shù)學(xué)計(jì)算的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-07-07
PHP5.4中json_encode中文轉(zhuǎn)碼的變化小結(jié)
在php5.4以前做json_encode的時(shí)候中文會(huì)被unicode編碼,中文都會(huì)被編碼,變成不可讀的,類(lèi)似“\u***”的格式,接下來(lái)介紹幾種5.4之前不進(jìn)行unicode轉(zhuǎn)碼的處理方法2013-01-01
PHP 關(guān)于訪問(wèn)控制的和運(yùn)算符優(yōu)先級(jí)介紹
這篇文章主要介紹了PHP中關(guān)于訪問(wèn)控制的和運(yùn)算符優(yōu)先級(jí)介紹,需要的朋友可以參考下2013-07-07

