2017-06-15 85 views
0

我必须将一些巨大的表格(> 60 GB)从latin1转换为utf8,我正在寻找最佳实践。一个问题是一些表包含序列化的php对象。如何将带有序列化值的latin1表转换为utf8?

我的第一种方法是将TEXT列设置为BLOB,将字符集转换为utf8并将列转换回TEXT,但是我在最后一步遇到了一些问题(不正确的字符串值:'\ xE4 \ xF6 \ XFC \ XDF“;?...')

什么是对值正确转换为UTF-8,最好的策略

+0

请注意,[serialize()](http://php.net/serialize)输出不应该是纯文本:*请注意,这是一个二进制字符串,可能包含空字节,需要存储并如此处理。例如,serialize()输出通常应存储在数据库的BLOB字段中,而不是CHAR或TEXT字段* –

回答

0

鉴于数据是在latin1编码,如在äöüß你例如,即列为CHARACTER SET latin1,请参阅http://mysql.rjweb.org/doc.php/charcoll#fixes_for_various_cases,其中说

ALTER TABLE tbl CONVERT TO CHARACTER SET utf8mb4; 

(或UTF8)

注:这将改变在一个表中的所有文本列的字符集;只有一张桌子。

相关问题