」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > PDO::MYSQL_ATTR_INIT_COMMAND 需要「SET CHARACTER SET utf8」嗎?

PDO::MYSQL_ATTR_INIT_COMMAND 需要「SET CHARACTER SET utf8」嗎?

發佈於2024-11-07
瀏覽:109

Is \

在有「PDO::MYSQL_ATTR_INIT_COMMAND」的 PDO 中「SET CHARACTER SET utf8」是否必要?

在PHP 和MySQL 中,「SET NAMES」 utf8」和「SET CHARACTER SET utf8」通常在使用UTF-8 編碼時使用。但是,當使用PDO 時,「PDO::MYSQL_ATTR_INIT_COMMAND 」參數將我們限制為單一查詢。因此,必須考慮在此上下文中是否需要「SET CHARACTER SET utf8」。

「SET CHARACTER SET utf8」對連線設定的影響

使用" “SET NAMES utf8”之後的“SET CHARACTER SET utf8”會將“character_set_connection”和“collat​​ion_connection”重置為資料庫的預設設定(“@@character_set_database”和“@@collat ion_database”)。

區別"SET NAMES" 和"SET CHARACTER SET"

"SET NAMES x" 影響:

  • "character_set_client"
  • ]
  • "character_set_results"
  • "character_set_connection"

"SET CHARACTER SET x"影響:

  • "character_set_client"
  • "character_set_results"
  • 「collion_connection」(但也在內部設定「character_set_connection」)

字元編碼/轉碼過程

MySQL透過多個轉碼步驟處理查詢和結果:
  1. 將傳入查詢從「character_set_client」轉換為「character_set_connection」
  2. 使用「列排序規則」比較字串(列與文字)
  3. 在「character_set_results」中建構結果集"

預設資料庫字元集的意義

如果資料庫的預設字元集不是UTF-8,使用「SET CHARACTER SET utf8」可能不會完全啟用UTF-8 支援。資料遺失。變數可以避免每個連線上不必要的SET指令的效能開銷。
最新教學 更多>

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

Copyright© 2022 湘ICP备2022001581号-3