利用CONVERT和CAST解决MySQL查询的乱码问题

发布时间 2023-08-30 17:16:56作者: -见

有如下一张表 :

CREATE TABLE t_test_table (f_f1 varchar(16)) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb3;

往表 t_test_table 的 f_f1 字段写入的为 latin1 编码的数据,要避免查询出乱码,可如下操作:

SELECT CONVERT(CAST(CONVERT(f_f1 USING latin1) AS BINARY) USING utf8) AS f_f1 FROM t_test_table limit 1;

上述方式适合部分字段的数据编码和字段字符集不一致的情况,如果整体不一致,可以设置连接的字符集:

set names 'latin1'