使用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处理一个非常有限的字符集(只适用于西欧)。