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