我有一列使用 latin1 字符编码。谁能解释为什么会这样?
当我运行时:
SET NAMES utf8;
SELECT unhex(convert(hex(text) USING utf8)) FROM translation_target
我可以正确显示字符。
当我运行时:
SET NAMES utf8;
SELECT text FROM sanus2013_dev1.translation_target;
我得到了损坏的字符:
所以我想如果我运行这样的东西:
UPDATE translation_target SET text = unhex(convert(hex(text) USING utf8));
我将能够使用:
SET NAMES utf8;
SELECT text FROM sanus2013_dev1.translation_target;
并查看正确的字符编码。谁能解释为什么这不起作用?
编辑:专栏translation_target
有CHARACTER SET latin1
COLLATE latin1_swedish_ci
不确定这是否有帮助,但我使用 ALTER TABLE COLUMN 语句将 CHARACTER SET 更改为 utf8 并将 COLLATION 更改为 utf8_unicode_ci;
跑步:
SET NAMES utf8;
SELECT unhex(convert(hex(text) USING utf8)) FROM translation_target;
显示损坏的字符。
当我将字符集和排序规则更改回 latin1 时,它再次起作用。