我正在处理一个数据库,该数据库使用 latin1
字符集编码(latini_swedish_ci
整理)保存名称,但名称是波斯语。
似乎有人将表排序规则更改为 utf8
(utf8_bin
) 但数据仍然是这样的:
我想知道如何修复这个值。
我更改了表排序规则和 DB
排序规则,但我仍然有这种值。
任何帮助将不胜感激。
提前致谢
最佳答案
看起来你有
- 客户端中的 utf8 编码字节,以及
SET NAMES latin1
(或等效项),以及CHARACTER SET latin1
在目标列上。
清理表的“修复”是执行两步 ALTER described here , 这涉及
ALTER TABLE Tbl MODIFY COLUMN col VARBINARY(...) ...;
ALTER TABLE Tbl MODIFY COLUMN col VARCHAR(...) ... CHARACTER SET utf8 ...;
其中长度足够大,其他“...”有任何其他内容(NOT NULL
等)已经在列中。
抱歉,修复 1500000 行需要很长时间。
我很确定这不会起作用:
ALTER TABLE tbl CONVERT TO CHARACTER SET utf8; -- no
只有当表当前包含与 utf8 字符等效的 latin1(等)时,它才会起作用。阿拉伯字符没有对应的 latin1。
(我认为它是阿拉伯语:باسلاÙ... --> باسلام)
关于mysql - 如何修复mysql数据编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29710565/