首頁 >資料庫 >mysql教程 >為什麼 json_encode() 無法使用 Latin1 編碼對 MySQL 資料庫中的重音字元進行編碼?

為什麼 json_encode() 無法使用 Latin1 編碼對 MySQL 資料庫中的重音字元進行編碼?

Barbara Streisand
Barbara Streisand原創
2024-10-30 11:55:02397瀏覽

Why Does json_encode() Fail To Encode Accented Characters From a MySQL Database with Latin1 Encoding?

JSON 編碼在MySQL 中與UTF-8 字元的鬥爭

當嘗試使用latin1_swedish_ci 編碼從資料庫中檢索重音字元並使用json_encode() 將它們編碼為JSON 時,結果可能出乎意料。預期結果(例如“Abord â Plouffe”)會轉換為“null”,從而使編碼的 JSON 無效。

要解決此問題,需要在先前將檢索到的值明確編碼為 UTF-8應用 json_encode()。這可確保 JSON 輸出包含正確的 UTF-8 字元並進行相應的驗證。以下是如何實現此解決方案:

<code class="php">// Initialize an empty array for the encoded result set
$rows = array();

// Iterate over the PHPMyAdmin result set
while ($row = mysql_fetch_assoc($result)) {
  // Apply UTF-8 encoding to each row value
  $rows[] = array_map('utf8_encode', $row);
}

// Output the encoded $rows
echo json_encode($rows);</code>

在此修改後的程式碼中,我們利用 array_map 函數將 utf8_encode 應用於結果集中每行的每個元素。這可確保在執行 json_encode 之前所有字元都正確編碼為 UTF-8。因此,產生的 JSON 輸出將準確反映預期字符,並​​根據需要保留重音字符。

以上是為什麼 json_encode() 無法使用 Latin1 編碼對 MySQL 資料庫中的重音字元進行編碼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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