利用CONVERT和CAST解决MySQL查询的乱码问题
有如下一张表 :
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'