在使用PHP語言的echo輸出JSON數據時,有時候會發現輸出的JSON字符串中含有中文,但是中文卻出現了亂碼,這是什么原因呢?
出現這種情況的主要原因是編碼問題,因為JSON字符串是通過UTF-8編碼傳輸的,而如果在PHP中使用echo輸出JSON時,編碼仍然使用默認的ISO-8859-1,所以中文會出現亂碼。
// 示例代碼 $data = array('姓名'=>'小明','年齡'=>18); $json = json_encode($data); echo $json;
如上述代碼,在使用json_encode方法將數組轉換為JSON字符串后,使用echo輸出會出現中文亂碼的情況。為了解決中文亂碼問題,可以通過修改輸出編碼方式等方法:
// 示例代碼 header('Content-Type:application/json; charset=utf-8'); $data = array('姓名'=>'小明','年齡'=>18); $json = json_encode($data, JSON_UNESCAPED_UNICODE); echo $json;
使用header方法指定Content-Type為application/json,并將編碼方式設置為utf-8,接著在json_encode方法中使用JSON_UNESCAPED_UNICODE參數來表示不對中文進行UNICODE編碼。以上代碼便可正確輸出JSON字符串并避免亂碼問題。