使用MySQL,我已将连接字符集设置为UTF-8:
SET NAMES 'utf8mb4';
SET CHARACTER SET 'utf8mb4';
这样我就可以将所有内容都恢复为UTF-8,即使对于具有latin1_swedish_ci排序规则的表格(也有一些)。
当我发送UTF-8 INSERT字符串时,要插入其中一个latin1表,是否会将值编码为latin1?
答案 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处理的字符集非常有限(仅适用于西欧)。