SQL将转换列从Latin1转换为UTF8

时间:2015-02-09 22:17:45

标签: mysql utf-8 character-encoding latin collate

我正在尝试将我的数据库中的表中的特定列从latin1字符集转换为coltin latin1_swedish_ci到utf8并使用collat​​ion utf8_unicode_ci。

COLUMN:description,type:longtext,default not null

我在列上尝试了以下命令:

ALTER TABLE sample MODIFY description LONGBLOB NOT NULL ;

ALTER TABLE sample MODIFY description LONGTEXT CHARACTER SET utf8 NOT NULL COLLATE utf8_unicode_ci;

我还试图改变编码,而不是先改为二进制。但是这些角色最终被服务器错误地重新编码。

并且在某些字符上出现错误:

  

错误代码:1366。字符串值不正确:' \ x92t hav ...'对于列' longDesc'在第803行

我桌上的某些角色似乎没有正确转换。

如何解决此问题?

1 个答案:

答案 0 :(得分:1)

\ x92表示你现在中有latin1。第二个ALTER是声明字节是utf8编码。因此,错误消息。

案例1:您需要将LONGTEXT更改为utf8,因为您计划添加包含无法在latin1中编码的文本的行。

对于这种情况,ALTER TABLE sample CONVERT TO CHARACTER SET utf8; - 转换表中的所有CHAR / TEXT列。

ALTER TABLE sample MODIFY description ... CHARACTER SET utf8; - 转换一列。

案例2:系统的其余部分正在考虑utf8并且对此专栏感到困惑。

好吧,我不认为它很困惑。根据需要进行转换。