使用MySQL,我已經設置我的連接字符集爲UTF-8:是否使用SET NAMES,SET CHARACTER SET編碼INSERT值?
SET NAMES 'utf8mb4';
SET CHARACTER SET 'utf8mb4';
這樣,我又回到一切爲UTF-8,甚至其中有一個latin1_swedish_ci覈對表(也有少數)。
當我發送UTF-8 INSERT字符串時,要插入到一個latin1表中,這些值是否會被編碼爲latin1?
使用MySQL,我已經設置我的連接字符集爲UTF-8:是否使用SET NAMES,SET CHARACTER SET編碼INSERT值?
SET NAMES 'utf8mb4';
SET CHARACTER SET 'utf8mb4';
這樣,我又回到一切爲UTF-8,甚至其中有一個latin1_swedish_ci覈對表(也有少數)。
當我發送UTF-8 INSERT字符串時,要插入到一個latin1表中,這些值是否會被編碼爲latin1?
優先:爲'charset'使用編程語言特定的連接參數。
第二優先級:SET NAMES utf8mb4;
- (無需引用)。
列/表上的CHARACTER SET
爲獨立此連接/ SET NAMES
。
連接/ SET NAMES
聲明客戶端中的字節使用了什麼編碼。 INSERT
/SELECT
將在該列和表格聲明之間轉換,因此您的utf8-latin1觀察。
「當我發送UTF-8 INSERT字符串時,要插入其中一個latin1表,這些值是否會被編碼爲latin1?」 - 重申,您發送的字節必須根據SET NAMES
進行編碼。如果可能的話,它們將在表格中正確轉換爲latin1。我說「如果可能」,因爲中文,表情符號等,不能轉換爲拉丁文1,因爲拉丁文1處理一個非常有限的字符集(只適用於西歐)。