新疆seo原創(chuàng),轉(zhuǎn)載請注明出處;

在寫一個項目的時候遇到的問題 項目編碼是gbk的

在json_encode 一個數(shù)組的時候返回空白,郁悶了很久

后來在簡化數(shù)組進行測試時發(fā)現(xiàn)如果數(shù)組中存在字符串則json_encode 返回false

后來百度之后才知道 json_encode 只能轉(zhuǎn)碼 utf-8的 字符串 如果有g(shù)bk的字符串的話就返回false

找到問題了就該解決了,獲取字符串的編碼進行轉(zhuǎn)碼然后再json_encode 搞定

下面貼代碼

一、檢測當(dāng)前字符串編碼并將編碼改為utf-8


1 獲取當(dāng)前字符串的編碼


$encode = mb_detect_encoding($str, array("ASCII",'UTF-8',"GB2312","GBK",'BIG5')); 


2 將字符編碼改為utf-8


$str_encode = mb_convert_encoding($str, 'UTF-8', $encode);




二、函數(shù)詳解


1 mb_detect_encoding — 檢測字符的編碼


說明


string  mb_detect_encoding (  string $str [,  mixed $encoding_list = mb_detect_order() [,  bool $strict = false ]] )
檢測字符串 str 的編碼。


參數(shù)


str
待檢查的字符串。


encoding_list
encoding_list 是一個字符編碼列表。 編碼順序可以由數(shù)組或者逗號分隔的列表字符串指定。


如果省略了 encoding_list 將會使用 detect_order。


strict
strict 指定了是否嚴格地檢測編碼。 默認是 FALSE。


返回值


檢測到的字符編碼,或者無法檢測指定字符串的編碼時返回 FALSE。


2 mb_convert_encoding — 轉(zhuǎn)換字符的編碼


說明


string  mb_convert_encoding (  string $str ,  string $to_encoding [,  mixed $from_encoding = mb_internal_encoding() ] )
將 string 類型 str 的字符編碼從可選的 from_encoding 轉(zhuǎn)換到 to_encoding。


參數(shù)


str
要編碼的 string。


to_encoding
str 要轉(zhuǎn)換成的編碼類型。


from_encoding
在轉(zhuǎn)換前通過字符代碼名稱來指定。它可以是一個 array 也可以是逗號分隔的枚舉列表。 如果沒有提供 from_encoding,則會使用內(nèi)部(internal)編碼。


參見支持的編碼。


返回值


編碼后的 string。