一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - PHP教程 - php處理json時中文問題的解決方法

php處理json時中文問題的解決方法

2019-11-20 14:50PHP教程網 PHP教程

最近在項目里面用到json操作,之前測試都是很正常的,不過今天在把對象轉換成json的時候,其中有個中文屬性變成了null.

操作的代碼如下: 

復制代碼代碼如下:


<?php 
$usr = new User(); 
echo json_encode($usr); 
?> 


很簡單的代碼,無中文情況一切正常,輸出如下: 
{"PlatformID":"123213","UserID":"1023"} 
一旦有中文的時候會出現兩種情況。 

第一種情況是對象本身的某個值為中文的屬性是utf-8編碼,則會有如下輸出: 


{"PlatformID":"123213","UserID":"1023","UserName":"\u00b7\u00f0\u00b5\u00b2\u00c9\u00b1\u00b7\u00f0\u00cc\u00fc"} 
其中的UserName是非人類語言,這個是正常的,如果我們用firebug看下就是中文的。(這個糾結了我半天) 

第二種情況是非utf-8編碼,輸出會變成null: 

{"PlatformID":"123213","UserID":"1023","UserName":null} 
很奇怪,查了手冊后知道json_encode是只對utf-8有效,其它編碼均會變為null. 


下面就開始解決編碼轉化的問題。 
在php.net上看到別人的函數如下: 

復制代碼代碼如下:


private function to_utf8($in) 

if (is_array($in)) { 
foreach ($in as $key => $value) 

$out[$this->to_utf8($key)] = $this->to_utf8($value); 


elseif(is_string($in)) 

if(mb_detect_encoding($in) != "UTF-8") 
return utf8_encode($in); 
else 
return $in; 

else 

return $in; 

return $out; 


于是拿下來轉換編碼發現已經不為null.欣喜之下用firebug打開,發現并不是我原來的中文字符....開始糾結...... 
難道是要讓他轉換成原來的編碼?回去尋找原始編碼...... 
測試開始: 

1.把$usr->UserName直接輸出,頁面頭設置charset=utf-8.亂碼 
2.echo json_encode($usr)輸出UserName=null 
3.頁面頭設置為charset=gbk,輸出正確->可以確定原編碼為gbk 
最后通過IE,Chrome,Firefox測試得出結論: 


1.保證頁面字符集與數據庫一致,輸出一定正常 。 
2.做json_encode時保證數據編碼是utf-8,json_decode正常。 
3.如果要對非utf-8字符做json_encode,先轉換成utf-8。 
4.對非utf-8字符做json_decode的時候,千萬不能忘記轉換成原先的編碼,否則會輸出亂碼!! 
困擾了一天的問題終于搞定了。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 色天天综合网色鬼综合 | 动漫女性扒开尿口羞羞漫画 | 成年人福利视频 | 深夜成人 | 99久久精品国产免费 | 青青热久麻豆精品视频在线观看 | 视频一区二区三区在线观看 | 成年人在线视频免费观看 | 四虎影院精品在线观看 | 亚洲高清国产拍精品影院 | 亚洲精品日韩专区在线观看 | 国产精品久久久久久久牛牛 | eee在线播放成人免费 | 国产在线91 | 99久久精品免费看国产 | 欧美日韩国产在线人成dvd | 性xx色3d动画xx无尽 | 亚洲欧美日韩另类精品一区二区三区 | 脱女学小内内摸出水网站免费 | 精品视频免费在线观看 | 色婷婷影院在线视频免费播放 | 欧美福利在线播放 | 无人区尖叫之夜美女姐姐视频 | 欧美性xxxxx 欧美性bbbbbxxxxxddd | 热久久最新 | 天天舔天天干天天操 | 丝袜老师好湿好紧我要进去了 | 91精品国产美女福到在线不卡 | 日韩欧免费一区二区三区 | 天色综合 | 91精品天美精东蜜桃传媒免费 | 美味情缘韩国在线观看视频 | 婷婷在线观看香蕉五月天 | 欧美日韩1区2区 | 2020最新版的ab片 | 亚洲 欧美 清纯 校园 另类 | 天堂8在线天堂资源在线 | 男gay男gay男gay野外 | 免费看3d小舞被躁视频网站 | www.午夜剧场 | 天作谜案免费完整版在线观看 |