将mysql字符集更改为utf8,数据库中已经存在的非拉丁字符现在不可读


Changed mysql charset to utf8, non-latin characters already in database now unreadable

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

mysqli_set_charset($link, "utf8");

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

我如何修复数据库中的数据,使其可读与utf8字符集?

表的字符集总是utf8。唯一改变的是,在连接期间有一个字符集集(如上所示),而在该行之前不存在。

表的创建相当基本,排序规则是utf8_general_ci

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

现在有了双编码的数据,在使用utf8作为字符集的连接上读取数据之前,需要对数据进行修复。

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