LOAD DATA INFILE在对CSV文件进行latin1编码的假设下运行了以前的文件。在此导入过程中,将多字节字符解释为两个单个字符,然后再次使用utf-8进行编码。
LOAD DATA INFILE
latin1
这种双重编码会产生类似的异常,ñ而不是ñ。
ñ
ñ
如何更正这些字符串?
下面的MySQL函数在双重编码后将返回正确的utf8字符串:
CONVERT(CAST(CONVERT(field USING latin1) AS BINARY) USING utf8)
它可以与UPDATE语句一起使用以更正字段:
UPDATE
UPDATE tablename SET field = CONVERT(CAST(CONVERT(field USING latin1) AS BINARY) USING utf8);