国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > PHP > 正文

php中json_encode處理gbk與gb2312中文亂碼問題的解決方法

2024-05-04 23:24:21
字體:
供稿:網(wǎng)友

本文講述了php中json_encode處理gbk與gb2312中文亂碼問題的解決方法,具體方法如下:

1.json_encode()中文在gbk/gb2312中對中文返回為null

$arr = array ( array ('catid' => '4','catname' => 'm.survivalescaperooms.com','meta_title' => '腳本之家'));echo json_encode($arr);

運(yùn)行結(jié)果:

[{"catid":"4","catname":"m.survivalescaperooms.com","meta_title":null}]

  看一了嗎"meta_title":null 他本來是有一個值的為"腳本之家"了,這個我們查了一下原理是json_encode只支持uft-8編碼,我們轉(zhuǎn)換一下
 

<?php$data="JSON中文";$newData=iconv("GB2312″,"UTF-8//IGNORE",$data);echo $newData;//ignore的意思是忽略轉(zhuǎn)換時的錯誤,如果沒有ignore參數(shù),所有該字符后面的字符都不會被保存。//或是("GB2312″,"UTF-8″,$data);?>

2.后臺PHP頁面(頁面編碼為UTF-8或者已經(jīng)把字符轉(zhuǎn)為UTF-8)使用json_encode將PHP中的array數(shù)組轉(zhuǎn)為JSON字符串。例如:

<?php$testJSON=array('name'=>'中文字符串','value'=>'test');echo json_encode($testJSON);?>

查看輸出結(jié)果為:

{"name":"u4e2du6587u5b57u7b26u4e32″,"value":"test"}

  可見即使用UTF8編碼的字符,使用json_encode也出現(xiàn)了中文亂碼。解決辦法是在使用json_encode之前把字符用函數(shù)urlencode()處理一下,然后再json_encode,輸出結(jié)果的時候再用函數(shù)urldecode()轉(zhuǎn)回來。具體如下:

<?php$testJSON=array('name'=>'中文字符串','value'=>'test');//echo json_encode($testJSON);foreach ( $testJSON as $key => $value ) {$testJSON[$key] = urlencode ( $value );}echo urldecode ( json_encode ( $testJSON ) );?>

查看輸出結(jié)果為:

{"name":"中文字符串","value":"test"}

  總結(jié):json_encode函數(shù)只能處理uft8字符串,如果是中文估計(jì)是對字節(jié)處理不好,因?yàn)橹形膅bk與uft長度是不一樣的,這個也不做深入介紹了。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 商南县| 乌海市| 庆城县| 德钦县| 苍梧县| 华安县| 西青区| 乌鲁木齐县| 红原县| 岢岚县| 安达市| 吉木萨尔县| 姚安县| 呼伦贝尔市| 芒康县| 拉孜县| 西峡县| 黄浦区| 巴楚县| 托克逊县| 花莲市| 昌江| 东乌珠穆沁旗| 浙江省| 毕节市| 富蕴县| 赣榆县| 绩溪县| 绵阳市| 宾川县| 柏乡县| 通江县| 胶南市| 东明县| 桂阳县| 石家庄市| 云安县| 琼结县| 万源市| 无棣县| 望城县|