MySQL charset转换

时间:2010-04-21 14:48:52

标签: mysql unicode internationalization character-encoding mysqli

我有一个数据库,其中所有文本字段和表都将'utf8'明确指定为默认字符集,但此数据库中的数据存储为'cp1257'。我只能在使用SET NAMES 'cp1257'\C cp1257时显示符号。试图在没有这些指令的情况下显示它们会失败,因为它试图以“utf8”(?)的形式获取数据。我怎么做才能将数据库的所有数据(可能是备份)作为'cp1257'并将其作为有效的'utf8'放回来?

1 个答案:

答案 0 :(得分:1)

您需要先将它们转换为二进制字段,然后将字段设置为cp1257。这样MySQL将知道字段存储在哪个字符集中:

ALTER TABLE CHANGE `field` `field` BLOB;
ALTER TABLE CHANGE `field` `field` TEXT CHARACTER SET 'cp1257';

如果要更改数据的存储方式,现在可以将字段转换为任何字符集(MySQL将在此步骤中进行数据转换):

ALTER TABLE CHANGE `field` `field` TEXT CHARACTER SET 'utf8';