将Mysql存储的数据转换为正确的utf8

将Mysql存储的数据转换为正确的utf8,mysql,perl,utf-8,Mysql,Perl,Utf 8,我使用错误的Perl格式将大型阿拉伯语数据库存储在Mysql中,发生了以下情况: 1) -使用属性创建的Mysql表: ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci 2) -我的perl脚本是用utf8创建的,我在顶部使用“use utf8;” 3) -我可以从表中读取数据,并使用charset utf8 meta标记在html页面上以阿拉伯语正常显示数据 当我看到数据库中的数据被存储为编码的不可读数据时,在搜索Perl模

我使用错误的Perl格式将大型阿拉伯语数据库存储在Mysql中,发生了以下情况:

1) -使用属性创建的Mysql表:

ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci
2) -我的perl脚本是用utf8创建的,我在顶部使用“use utf8;”

3) -我可以从表中读取数据,并使用charset utf8 meta标记在html页面上以阿拉伯语正常显示数据

当我看到数据库中的数据被存储为编码的不可读数据时,在搜索Perl模块DBI后,我发现我应该这样做:

$dbh->{'mysql_enable_utf8'} = 1;
$dbh->do('SET NAMES utf8');
在连接到数据库之后,我没有这样做

现在,如果我这样做,存储在表中的新数据在任何地方都会正确显示,即使在mysql浏览器windows应用程序中也是如此


现在表中已经存储的数据出现了问题,它似乎是双utf8编码或类似的东西。如何在未设置上述标志的情况下修复已存储的数据。

经过几天的搜索,仍然无法在mysql direct或使用类似Perl的编程中修复数据

我所做的唯一解决方案是从mysql中导出数据,方法与我放入mysql的方法相同,似乎是由Perl对文本文件进行双utf8编码,但在我首先用Perl对其进行utf8解码之后

之后,数据被正确地保存到UTF8格式的文本文件中,该文件可以作为Perl和mysql中的有效UTF8数据直接导入或管理