首頁  >  文章  >  後端開發  >  php中json資料轉換成數組出現亂碼

php中json資料轉換成數組出現亂碼

PHPz
PHPz原創
2023-05-11 09:20:36616瀏覽

在PHP的開發中,JSON資料的處理已經成為了常見的工作。尤其是在與前端互動或與第三方API對接時,JSON往往是最常見的資料格式。

而在使用PHP處理JSON資料的過程中,有時會遇到JSON資料轉換成陣列出現亂碼的情況。本文將探討造成這種情況的原因以及解決方法。

一、為什麼會出現亂碼?

在PHP中,透過json_decode()函數將JSON資料轉換成陣列是一種常見的操作方式。但是,如果JSON資料中存在中文字符,那麼轉換後的數組中中文字符可能會出現亂碼。

這是因為PHP預設採用的字元集為ISO-8859-1,而非UTF-8,因此無法正確辨識UTF-8編碼格式的中文字符,導致亂碼出現。

二、解決方法

1.使用json_decode()函數的第二個參數

json_decode()函數除了可以將JSON資料轉換成陣列以外,還可以新增第二個參數,用於指定JSON字串的編碼格式。

例如,如果JSON資料採用UTF-8編碼,那麼可以透過以下程式碼指定:

$result = json_decode($json, true, JSON_UNESCAPED_UNICODE);

其中,第三個參數JSON_UNESCAPED_UNICODE告訴PHP不要將中文字元轉義,而是直接保留原本的UTF-8編碼。

2.將ISO-8859-1字元集轉換成UTF-8字元集

另一個解決方法是將ISO-8859-1字元集轉換成UTF-8字元集。可以透過使用iconv()函數或mb_convert_encoding()函數來實現。

例如,使用iconv()函數可以這樣寫:

$result = json_decode(iconv("ISO-8859-1", "UTF-8//IGNORE", $json), true);

其中,第二個參數"UTF-8//IGNORE"告訴iconv()函數將ISO-8859-1編碼的字符轉換成UTF-8編碼。

3.直接在PHP檔案中加入編碼格式聲明

在PHP檔案的開頭加入以下程式碼:

header("Content-type:text/html;charset=utf-8");

這樣可以將PHP檔案的字元集指定為UTF -8編碼,確保可以正確辨識中文字元。

總結:

在PHP中處理JSON資料遇到亂碼問題,不要驚慌,可以透過加入json_decode()函數的第二個參數,或是將ISO-8859-1編碼轉換成UTF-8編碼,或在PHP檔案開頭添加字符集聲明等方法來解決。

以上是php中json資料轉換成數組出現亂碼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn