尝试将latin1 mysql DB快速转换为utf8,我尝试了以下操作:
除了...有些字母转换错误(例如:大写重音的“U”变成了以问号开头的乱码序列)。正在进行一些转换(od a查询结果显示了一个两字节序列,其中latin1字节是),并且te latin1版本是正确的。尽管到目前为止,我一直没有系统地将问题隔离开来(深夜;在截止日期之前;等等),但问题的怪异让我心碎:为什么它会在一些信件上失败,而不是全部?客户端连接?列字符集?为什么我没有得到任何诊断?我被困住了。
当然,我可以把这个问题和它的细节分离出来,但是我想也许有人已经遇到了这个问题,并且可以通过这个(诚然是相当糟糕的)描述来识别它。
干杯
数据可能存储为latin1,但有可能您用来转储数据的客户机已经将其导出为UTF-8。
在一个像样的文本编辑器(notepad++、TextWrangler、Atom)中打开转储文件,并检查哪种编码允许正确显示所有字符。
然后在将数据导入回来时,确保您的客户机设置为在导入时使用UTF-8。
不要用iconv,它只会把工作搞得一团糟。
假设一个表被声明为latin1并且正确地包含latin1字节,但您希望将其更改为utf8,那么对该表执行以下操作:
ALTER TABLE tbl CONVERT TO CHARACTER SET utf8;
也可以用转储和重新加载来完成;它涉及对参数的一些更改。抱歉,我不知道细节。