首頁  >  文章  >  後端開發  >  為什麼 PHP 中的特定大陸程式碼 `json_encode()` 會失敗?

為什麼 PHP 中的特定大陸程式碼 `json_encode()` 會失敗?

Barbara Streisand
Barbara Streisand原創
2024-11-03 23:22:30865瀏覽

Why Does `json_encode()` Fail with Specific Continent Codes in PHP?

PHP 陣列的JSON 編碼問題

問題:

問題:

問題:
<code class="php">$result = mysqli_query($con, "SELECT * FROM countries WHERE continent_code='EU'") or die(mysqli_error($con));

while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
    $orders[] = array(
        'CountryCode' => $row['code'],
        'CountryName' => $row['name']
    );
}

echo json_encode($orders);</code>

我正在使用PHen 的( ) 函數將MySQL 表資料轉換為JSON,但我遇到了奇怪的行為。此函數不會對某些查詢的資料進行編碼,特別是那些包含特殊字元或某些大陸代碼的查詢。

    代碼片段:
觀察:

代碼正確編碼的大陸代碼「AS」數據。

大陸程式碼「EU」、「NA」、「AF」和其他程式碼不會產生 JSON輸出。

問題:

    json_encode() 函數要求所有傳入資料都以 UTF-8 編碼。特殊字元和某些大陸代碼可能無法在資料庫中或資料操作過程中正確編碼。
  • 解決方案:
  • 確保整個 Web 應用程式採用 UTF-8 編碼。這包括:

將資料庫連接設定為使用UTF-8(例如mysqli_set_charset($con, 'UTF-8'))聲明JSON 回應的標頭( header( 'Content-Type: application/json; charset=utf-8');)驗證PHP 檔案和資料庫是否使用UTF-8 編碼(例如,透過檔案編碼或資料庫設定) 正如RFC4627 所述:「JSON 文字應使用Unicode 進行編碼。預設編碼是UTF-8。」透過確保UTF-8 編碼,json_encode() 將能夠正確處理所有數據,無論其內容為何。

以上是為什麼 PHP 中的特定大陸程式碼 `json_encode()` 會失敗?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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