我使用错误格式的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编码或类似的东西。如何在未设置上述标志时修复已存储的数据。
答案 0 :(得分:0)
经过几天的搜索,无论如何都没有找到直接修复mysql中的数据或使用像Perl这样的编程。
我做的唯一解决方案是从mysql中导出数据,就像我把它放入其中似乎是由Perl对文本文件进行双重utf8编码但在我首先在Perl中解码它之后。
之后,数据被正确保存为UTF8格式的文本文件,可以直接导入或管理为Perl和mysql中的有效UTF8数据。