将mysql charset更改为utf8,数据库中已存在的非拉丁字符现已无法读取

时间:2014-06-05 20:32:15

标签: php mysql utf-8

我在数据库中有几年的数据,这是99%的拉丁字符。最近,我在mysql连接后添加了以下内容:

mysqli_set_charset($link, "utf8");

现在,数据库中由亚洲,希伯来语等字符组成的所有现有数据都不再可读,并显示为垃圾数据。

如何修复数据库中的数据,以便用utf8字符集读取?

表charset总是utf8。唯一改变的是在连接期间设置了一个字符集(如上所示),并且在该行没有之前。

表创建非常基础,排序规则为utf8_general_ci

CREATE TABLE `test` (
 COLUMNS + INDEXES
) ENGINE=InnoDB DEFAULT CHARSET=utf8

1 个答案:

答案 0 :(得分:2)

您现在拥有双重编码的数据,并且您需要先修复数据,然后才能在使用utf8作为字符集的连接上读取数据。

这是一篇博客,详细解释了如何修复数据: http://www.mysqlperformanceblog.com/2013/10/16/utf8-data-on-latin1-tables-converting-to-utf8-without-downtime-or-double-encoding/