PHP JSON_DECODE/JSON_ENCODE中文內容為NULL或亂碼
<?php
$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
var_dump(json_decode($json));
var_dump(json_decode($json, true));
?>
輸出結果
object(stdClass)#1 (5) {
["a"] => int(1)
["b"] => int(2)
["c"] => int(3)
["d"] => int(4)
["e"] => int(5)
}
array(5) {
["a"] => int(1)
["b"] => int(2)
["c"] => int(3)
["d"] => int(4)
["e"] => int(5)
}
完全正確沒有任何問題,那麼我們測試中文
<?php
$json = '{"a":"中國人人"}';
var_dump(json_decode($json));
?>
結果
{"text":null,"status":1}
後來從php手冊中得出,json_encode 和 json_decode只支援utf-8編碼的字元,GBK的字元要用json就得轉換一下,這樣我們就好辦了
轉換一個編碼
/* 字串GBK轉碼為UTF-8,數字轉換為數字。 */ function ct2($s){ if(is_numeric($s)) { return intval($s); } else { return iconv("GBK","UTF-8",$s); } } /* 批量處理gbk->utf-8 */ function icon_to_utf8($s) { if(is_array($s)) { foreach($s as $key => $val) { $s[$key] = icon_to_utf8($val); } } else { $s = ct2($s); } return $s; } echo json_encode(icon_to_utf8("廈門"));
這樣還是有時會有問題,後來找了一種在json_encode之前,把所有陣列內所有內容都用urlencode()處理一下,然用json_encode()轉換成json字串,最後再用urldecode()將編碼過的中文轉回來。
寫了個函式
/************************************************************** * * 使用特定function對陣列中所有元素做處理 * @param string &$array 要處理的字串 * @param string $function 要執行的函式 * @return boolean $apply_to_keys_also 是否也應用到key上 * @access public * *************************************************************/ function arrayRecursive(&$array, $function, $apply_to_keys_also = false) { foreach ($array as $key => $value) { if (is_array($value)) { arrayRecursive($array[$key], $function, $apply_to_keys_also); } else { $array[$key] = $function($value); } if ($apply_to_keys_also && is_string($key)) { $new_key = $function($key); if ($new_key != $key) { $array[$new_key] = $array[$key]; unset($array[$key]); } } } } /************************************************************** * * 將陣列轉換為JSON字串(相容中文) * @param array $array 要轉換的陣列 * @return string 轉換得到的json字串 * @access public * *************************************************************/ function JSON($array) { arrayRecursive($array, 'urlencode', true); $json = json_encode($array); return urldecode($json); }
相關推薦
PHP JSON_DECODE/JSON_ENCODE中文內容為NULL或亂碼
<?php $json = '{"a":1,"b":2,"c":3,"d":4,"e":5}'; var_dump(json_decode($json)); var_dump(json_decode($json, true)); ?> 輸出結果 obj
mysql使用存儲過程插入數據後,參數為中文的為?或亂碼
做了 cnblogs 現象 顯示 題解 中文 原因 png 操作 最近了解了一下mysql存儲過程,之前版本的mysql不支持存儲過程,5.0版本後就可以支持存儲過程的使用;恰好筆者下載使用版本為5.6.20: 做了一個給表插入數據的簡單存儲過程,發現打開表後漢字全部
php 伺服器端解決json_decode()的bug 輸出為null, json_last_error函式為4語法錯誤
php 伺服器端解決json_decode() bug 問題: 問題描述: json_decode() 轉換json字串時輸出結果為 null,函式返回值為false 出現問題的分析: 1
SCRIPT5007:無法獲取屬性“show”的值,對象為null或沒有定義
dojo show post nbsp gb2 data scrip con style 1、錯誤描寫敘述 SCRIPT5007:無法獲取屬性“show”的值,對象為null或沒有定義 dojo.js,行15.字符11808 2、錯誤原因
php 解決json_encode中文UNICODE轉碼問題
*** www. str .com 再次 alt pan 進行 可讀的 原文地址:php 解決json_encode中文UNICODE轉碼問題用PHP的json_encode來處理中文的時候, 中文都會被編碼, 變成不可讀的, 類似"\u***"的格式,如果想漢字不進行轉碼
php實現json_encode()中文字元不轉義
在專案中,php提供的介面使用json_encode()函式,在處理中文的時候, 中文都會被編碼成Unicode碼, 變成不可讀的, 類似”\u***”的格式,如果想漢字不進行轉碼,這裡提供三種方法 1.php版本在5.3及以下自己寫函式實現中文不轉義 function json_encod
Redhat Linux AS4中行動硬碟自動載入後中文內容為亂碼?
2006-07-29 這個挺傷腦筋, 因為大容量的東西通過網路傳輸比較慢,而在Linux下卻不知裡面是什麼。 先確定locale: ># locale LANG=zh_CN.UTF-8 LC_CTYPE="zh_CN.
echarts 無法獲取屬性“getAttribute”的值: 物件為 null 或未定義 錯誤解決方法
使用百度的echarts時,在IE9下執行時有時會報如題的錯誤,有時重新整理下又正常,造成這種錯誤的原因是 echarts.js引用放在head中或者放在body中HTML程式碼的前面了,造成載入時阻塞後面的html。 解決方法就是將echarts.js的引用放在<
php的json_encode()中文編碼問題
今天,看東西,突然看到之前寫的程式碼,得記錄下來,不然又遺忘了! php 5.4.0之前,json_encode() 是不支援 中文編碼的 5.4.0之後,json_encode()新增了 JSON_UNESCAPED_UNICODE 選項,支援了中文,我們得寫一個相容函式
json_decode轉換json資料為null
經常使用json_decode()轉換json字串,一直都很順利,然而今天碰到了一個頭疼的問題,json字串轉換過之後一直為null。 上網搜尋了下,可以使用json_last_error()函式來檢
PHP+MYSQL+JQUERY實現內容的篩選或實時搜尋
這是本人做的一個通訊錄例項。可實時查詢<?php include ("menu.php"); include ("head.php"); ?> <!-- 引入jQuery --> <script src="jquery-1.7.2.
PHP的json_encode中文被轉碼的問題 在php5.2中做json_encode的時候。中文會被unicode編碼, php5.3加入了options引數, 5.4以後才加入JSON_U
在php5.2中做json_encode的時候。中文會被unicode編碼, php5.3加入了options引數, 5.4以後才加入JSON_UNESCAPED_UNICODE,這個引數,不需要做escape和unicode處理。 所以在5.4之前都需要對中文做個處理
jquery 判斷文字框為空 或為null 或 過濾空格
function isNullObj(obj){if(obj==null){return true; }else if(obj.replace(/\s*/g,"")==""){return true; }else{return false; } } 簡單一點過濾空格
springMVC 對引數為null或引數不為null的處理
前臺傳給後臺的引數有時是不固定的,有些引數可能有,有些可能沒有,比如獲取定位的gps,有的使用者有開gps,就有gps引數,有些沒有,就沒有gps引數,因此,我想讓這些引數成為可選的,如果沒有傳入,則可
PHP 中 json_encode中文處理、urlencode方法、post中文亂碼
今天在用HttpClient的PostMethod模擬瀏覽器用表單的post方法傳送資料給伺服器的時候,如果資料是中文,伺服器接收的是亂碼,然後看了很多亂碼的文章,最後解決了,現在總結下. 1.首先搞清楚客戶端是用那種編碼方式將資料編碼後提交的. 瀏覽器在form提交後,會生成一個HTTP的頭部資訊"
.NET判斷對象判不為null或不為""或不為"undefined"
als pub turn str def min equal == orb public static bool isNotNullOrBlank(Object obj) { if (obj == null || obj.ToString
zabbix圖形頁面資料欄位顯示為方框或亂碼
摘要: 本文講的是zabbix圖形頁面資料欄位顯示為方框或亂碼, zabbix圖形頁面資料欄位顯示為方框或亂碼 1、因zabbix使用的DejaVuSan.ttf字型,不支援中文,導致中文出現亂碼,它的位置(A)為:/var/www/html/zabbix/fonts; zabbix圖形頁面資料欄位顯示為方
zabbix圖形頁面數據字段顯示為方框或亂碼
欄目 nts http 51cto 顯示 修改 頁面 人物 rap 摘要: 本文講的是zabbix圖形頁面數據字段顯示為方框或亂碼, zabbix圖形頁面數據字段顯示為方框或亂碼 1、因zabbix使用的DejaVuSan.ttf字體,不支持中文,導致中文出現亂碼,它的位置
vc2010中mfc/com選單、控制元件等漢字顯示為問號或亂碼的解決方法
在vc2008中建立基於mfc的project。在嚮導的Application type頁面中如果在resource language選項中選擇“英語(美國)”(圖一),那麼在project中的設定選單或者控制元件(如button)上的漢字會最終顯示為“?”。有幾個漢字就
PHP將資料庫查詢內容轉換為JSON格式且顯示中文
最近寫android,開始寫伺服器了。最終伺服器的語言就先定為PHP,因為以前寫過一陣子網頁,所以就先用PHP試試水。 那麼首先為了實現android前端與伺服器互動,那麼我們伺服器傳輸的資料就要先變為JSON格式。 那麼如何將資料庫中的內容查詢出來,並且使其轉變為JSON格式呢?程式碼如下