我正在使用latin1
字符集编码(latini_swedish_ci
排序规则)处理名称的数据库,但名称是波斯语。
似乎有些正文将表格整理更改为utf8
(utf8_bin
),但数据仍然是这样的:
我想知道如何修复这些值。
我改变了表格整理和DB
整理,但我仍然有这种价值观。
任何帮助将不胜感激。
提前感谢
答案 0 :(得分:5)
看起来你有
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(etc)时才有效。阿拉伯字符没有latin1等价物。
(我把它看作阿拉伯语:باسٓاÙ... - >باسلام)
答案 1 :(得分:1)
更改为utf8_unicode_ci
之类的(要更改表格的默认字符集和整理,包括现有列的表格 - 转换为 - 这是关键部分)
alter table <some_table> convert to character set utf8 collate utf8_unicode_ci;
_ci
后缀表示排序和比较不区分大小写。所以这应该不是问题。
UTF-8是Unicode字符集的编码,它应该支持世界上几乎所有语言。
唯一的区别在于对结果进行排序,不同的字母可能会以不同的顺序出现在其他语言中(重音符号,变音符号等)。例如,将 a 与ä进行比较可能会在另一种排序规则中表现不同。
你可以为我们添加一个带有角色的名字 - 仅仅在图像中使用名称来尝试不同的东西真的很难。