當嘗試使用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中文網其他相關文章!