如何将格式错误的数据转换为utf8?

时间:2011-07-28 10:51:04

标签: mysql utf-8

我有一个数据库,看起来像这样的Î'νϓÎÎÎααÏ”ÎÎÎÎÎÎÎÎÎÎÎÎÎ我需要找到一种方法将它全部转换为正确的utf8数据。

有办法吗? db是MySQL,来自oscommerce merchant v2.2安装。

2 个答案:

答案 0 :(得分:0)

首先你需要找出原始编码,我建议你得到一个允许“加载为(编码)”的文本编辑器,如EmEditor,将文本复制到文本文件中,然后将其打开为不同的编码,看看它看起来正确的编码。然后我们可以讨论如何将其转换为UTF-8。


更新:我刚检查了你的转储文件,将一小部分奇怪的文本复制到一个文本文件中,保存为二进制文件并重新打开,因为UTF-8显示为正确的希腊语,有一个像这样的php页面:

<html>
<head>
     <meta http-equiv="content-type" content="text/html; charset=utf-8" />
</head>
<body>
<?php
$res = mysql_query( 'SELECT BINARY first_name FROM address_book LIMIT 5' );
while( $r = mysql_fetch_row( $res ) ) {
    echo $r[0].'<br />';
}
?>
</body>
</html>

看看你得到了什么。

答案 1 :(得分:0)

首先,我尝试确定数据的字符集是什么。要做到这一点:

  • 使用SHOW CREATE TABLE找出包含
  • 数据的MySQL表的排序规则
  • 将您的客户端设置为使用相同的排序规则(这可确保不进行转换)
  • 将带有mysqldump的表导出到服务器上的文件

现在,你已经从表中获得了未经更改的数据副本,并且字节数字与数据库中存储的数据相同。使用您喜欢的文本编辑器尝试切换字符集编码并确定存储数据的字符集。当您最终在浏览器中设置正确的字符集时,文本将正确呈现。

编码的可能候选者将是ISO-8859-7UTF-8

一旦确定了正确的编码,就应该能够修改mysqldump文件中的charset编码,然后将这些数据正确加载到新表中。