調用中間件接口的返回值是一個xml字符串,其中 charset="GB2312" ,但奇怪的是我使用下面這個函數來判斷這個xml字符串,得到的結果卻是 UTF-8。
mb_detect_encoding()
由於 xml 中 charset 的值爲 GB2312,所以導致了
simplexml_load_string()
無法成功解析這個xml字符串
其實解決這個錯誤非常簡單,使用 str_replace 函數將xml字符串中的編碼格式替換爲 UTF-8 後再使用json編碼解碼後就可以得到乾淨的數組元素。
$xml= str_replace('GB2312','UTF-8',$xml);
$xml= simplexml_load_string($xml);
$xml= json_encode($xml);//將對象轉換個JSON
$xml=json_decode($xml,JSON_UNESCAPED_UNICODE);//將json轉換成數組