如何修复MySQL数据编码

mrm*_*mrm 1 mysql character-encoding

我正在使用名称latin1集(使用latini_swedish_ci排序规则)保存名称的数据库,但名称使用的是波斯语。

似乎有些主体将表排序规则更改为utf8utf8_bin),但数据仍然像这样:

在此处输入图片说明

我想知道如何解决这个问题。

我更改了表排序规则和DB排序规则,但仍然有这种值。任何帮助将不胜感激。

提前致谢

Ric*_*mes 5

好像你有

  • 客户端中的utf8编码字节,以及
  • SET NAMES latin1 (或同等学历),以及
  • CHARACTER SET latin1 在目标列上。

清理表的“方法”是执行此处描述的两步ALTER ,这涉及

ALTER TABLE Tbl MODIFY COLUMN col VARBINARY(...) ...;
ALTER TABLE Tbl MODIFY COLUMN col VARCHAR(...) ... CHARACTER SET utf8 ...;
Run Code Online (Sandbox Code Playgroud)

长度足够大而另一个“ ...”具有其他任何值(NOT NULL,等等)已经在列上。

抱歉,但是修复150万行需要很长时间。

我敢肯定,这将无法正常工作:

ALTER TABLE tbl CONVERT TO CHARACTER SET utf8;  -- no
Run Code Online (Sandbox Code Playgroud)

仅当表当前包含等效于utf8字符的latin1(等)时,它才有效。阿拉伯字符没有等效的latin1。

(我将其视为阿拉伯语:باسلام-> ??????)