2015-02-09 91 views
0

我正尝试使用排序规则utf8_unicode_ci将我的数据库中的表中的特定列从拉丁文字符集latin1_swedish_ci转换为utf8。将Latin1的SQL转换列转换为UTF8

COLUMN:说明,类型:LONGTEXT,默认非空

我试图在列下面的命令:

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

***什么***数据库?? – 2015-02-10 06:01:51

+0

我正在使用mysql – 2015-02-10 22:44:03

回答

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,并且被这一列所困惑。

嗯,我不认为它是困惑。根据需要进行转化。