是否使用SET NAMES,SET CHARACTER SET编码INSERT值?

时间:2016-07-15 10:07:11

标签: mysql encoding utf-8

使用MySQL,我已将连接字符集设置为UTF-8:

SET NAMES 'utf8mb4';
SET CHARACTER SET 'utf8mb4';

这样我就可以将所有内容都恢复为UTF-8,即使对于具有latin1_swedish_ci排序规则的表格(也有一些)。

当我发送UTF-8 INSERT字符串时,要插入其中一个latin1表,是否会将值编码为latin1?

1 个答案:

答案 0 :(得分:1)

首选:将特定于编程语言的连接参数用于'charset'。

第二个偏好:SET NAMES utf8mb4; - (不需要引用)。

列/表格中的CHARACTER SET是此连接的独立 / SET NAMES

连接/ SET NAMES声明客户端中的字节使用了什么编码。 INSERT / SELECT将在它与列/表声明之间进行转换,从而对你的utf8-latin1进行观察。

“当我发送UTF-8 INSERT字符串时,要插入其中一个latin1表,是否会将值编码为latin1?” - 重申一下,您发送的字节必须根据SET NAMES进行编码。如果可能,它们将在表格中正确转换为latin1。我说“如果可能的话”,因为中文,表情符号等不能转换为latin1,因为latin1处理的字符集非常有限(仅适用于西欧)。