我對正確使用有疑問
$mysqli->set_charset()
。我已經很多年沒有在我的網站上使用此功能了。現在我正在重寫我的連接腳本,並希望正確應用 $mysqli->set_charset()
。目前網站仍然基於「latin1」(但我很快就會切換到 UTF-8 (utf8mb4)。)
我的伺服器(我自己管理)上的 MySQLi 多年來一直使用 latin1 設定。我想現在加入這個 $mysqli->set_charset("latin1")
不會有什麼壞處嗎?
如果 MySQLi 預設配置為 utf8mb4,如果沒有 $mysqli->set_charset()
函數,我的網站上會出現奇怪的編碼字元嗎?
我想確認一下我的假設。
mysqli::set_charset()
設定連接的字元集,即「我透過此連接發送的所有字串都將使用這個 > 編碼,我也希望編碼回來」。您需要將其與您在 PHP 端使用的編碼相符。也就是說,即使目前設定錯誤,如果您變更目前值,也可能會導致資料損壞。這是因為在某些情況下,只要設定一致,從您的資料庫傳輸到資料庫的過程中被破壞的資料就會以相同的方式被破壞。
在進行任何更改之前,您需要確定目前使用的編碼是什麼,以及資料庫中的資料是否被破壞。從那裡您可以製定一條路徑來確保所有編碼都匹配,您的資料在所有步驟中都正確編碼和處理,以及修復現有資料。
一如既往,請參閱主帖:UTF-8 貫穿始終一个>
額外的想法:
latin1
實際上是 ISO-8859-1,但要注意它是邪惡的雙胞胎 cp1252,它在保留器 8X 和 9X 位元組範圍中填充了額外的符號,特別是 €。 參考李>