mysql - 如何修复mysql数据编码

标签 mysql character-encoding

我正在处理一个数据库,该数据库使用 latin1 字符集编码(latini_swedish_ci 整理)保存名称,但名称是波斯语。

似乎有人将表排序规则更改为 utf8 (utf8_bin) 但数据仍然是这样的:

enter image description here

我想知道如何修复这个值。

我更改了表排序规则和 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/

相关文章:

php - android 使用 json 连接 php/mysql 选择查询不起作用

mysql - MySQL 中的空连接上的 group_concat

Python 3.5.2 非 Ascii 字符输出

java - 编码/解码 REST 路径参数

character-encoding - 更改响应头编码 .Net Core

python - Base64 转换小数

php - 在 php mysql 中使用带有 max 的 innerjoin 时不列出用户

php - 用户指定的内容共享,例如 G+

mysql - 如何在 MySQL 中将多行(但一列)转换为单行

java - 使用 jQuery-ajax 和 Servlet 的阿拉伯语数据