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

时间:2014-12-23 12:35:29

标签: mysql perl utf-8

我使用错误格式的Perl将大型阿拉伯数据库存储在Mysql中,这里发生了什么:

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

ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci

2) - 我的perl脚本是在utf8中创建的,我使用"使用utf8;"在顶部。

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

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

$dbh->{'mysql_enable_utf8'} = 1;
$dbh->do('SET NAMES utf8');

在连接到我没有做的数据库之后立即。

现在,如果我这样做,即使在mysql浏览器窗口应用程序中,存储在表中的新数据也会显示在任何地方。

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

1 个答案:

答案 0 :(得分:0)

经过几天的搜索,无论如何都没有找到直接修复mysql中的数据或使用像Perl这样的编程。

我做的唯一解决方案是从mysql中导出数据,就像我把它放入其中似乎是由Perl对文本文件进行双重utf8编码但在我首先在Perl中解码它之后。

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