」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 為什麼使用 Windows-1252 編碼在 PHP 中編碼單引號時 `json_encode()` 失敗?

為什麼使用 Windows-1252 編碼在 PHP 中編碼單引號時 `json_encode()` 失敗?

發佈於2024-11-12
瀏覽:669

Why Does `json_encode()` Fail When Encoding Single Quotes in PHP with Windows-1252 Encoding?

PHP 的json_encode 因單引號失敗

PHP 的json_encode 因單引號失敗

在涉及PHP stdClass 物件($post)的場景中,json_encode() 函數意外出現無法對post_title 屬性進行編碼,導致JSON 輸出中出現空值。儘管資料庫明顯採用 UTF-8 編碼,但資料檢索過程似乎可能未正確配置。

原因:編碼不正確

JSON 編碼問題源自於 post_title 中單引號字元的編碼不正確。具體來說,該字元採用 Windows-1252 進行編碼,導致十六進位值為 92,這不是有效的 UTF-8 字元。

解決方案:設定資料庫連線編碼

    要解決這個問題,需要將資料庫連線編碼設定為UTF-8。所使用的方法取決於所使用的API:
  • MySQL: mysql_set_charset("utf8")
  • MySQL: mysql_set_charset("utf8")
MySQL: mysql_set_charset("utf8")

MySQLi: mysqli_set_charset("utf8")

PDO (PHP > = 5.3.6):連接字串中的字元集參數

Why Does `json_encode()` Fail When Encoding Single Quotes in PHP with Windows-1252 Encoding? 
PDO(早期版本):SET NAMES utf8

其他注意事項

請務必注意,設定連線編碼可確保從資料庫檢索的資料正確編碼為UTF-8。但是,如果資料以不正確的編碼存儲,例如Windows-1252,則可能需要透過utf8_encode()或其他方式手動轉換。

最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3