sql:从cp1251转换为utf8

时间:2018-02-13 20:51:57

标签: mysql sql unicode converter character-set

如何编译将表列从 cp1251转换为utf8 的SQL查询。我的数据库和其中的所有表格都带有utf8的编码,但是cp1251里面的信息。由于此信息显示不正确。在设置中对编码进行简单更改会将其转换为其他难以理解的符号。我试图在转储中更改DEFAULT CHARESET,但它也没有帮助:(也许还有其他方法?

数据库的一部分:

enter image description here

我这样做了:

  1. mysqldump -u mysql -p conference_db --allow-keywords --create-options --complete-insert --default-character-set = utf8 --add-drop-table> dump.sql
  2. 全部... DEFAULT CHARESET = utf8 更改为... DEFAULT CHARESET = cp1251 (在创建表中)
  3. mysql -u mysql -p conference_db --default-character-set = cp1251< dump.sql

2 个答案:

答案 0 :(得分:0)

使用转储和恢复操作很难做到这一点。

但是,您可以使用CONVERT operation转换SELECT语句中违规列的字符集:CONVERT(column USING utf8)

例如,如果您在列上有一个包含正确字符集的新空表,则会将旧表复制到新表并进行转换。

 INSERT INTO new_table
 SELECT journal_id, locale, setting_name, 
        CONVERT(setting_value USING utf8) setting_value
        setting_type
   FROM table

答案 1 :(得分:0)

表上的默认字符集无关紧要。重要的是字符串列上的字符集。

备份到原件;我担心失败的转换只会让事情变得更糟,而且更难解开。

屏幕截图看起来很像“Mojibake”。 (如果您可以将数据粘贴到问题中,我可以进一步分析。)请参阅here中的“Mojibake”,了解导致错误的原因。

有关恢复数据的帮助,请提供SHOW CREATE TABLESELECT HEX(col) ...,以便我们了解您拥有的内容。 (“来自cp1251的列”含糊不清)。