错误的utf8编码导出Mysql数据库

时间:2016-07-29 07:39:18

标签: php mysql encoding utf-8 phpmyadmin

我总是在phpmyadmin中看到特殊字符编码如下:
میثم ابراهیمیجØعشق ØŒ سر ب راه ØŒ نبض ØŒ شبهای ØŒ غنچه ها ØŒ شکوه ØŒ همین امروز ØŒ عادت ت'

我一直认为这只是一个与phpmyadmin相关的问题,因为在我的应用程序中所有这些都被正确显示。 现在我正在导出这个数据库,在我的mysql转储中,我看到上面的字符,所以它们似乎以这种方式存储在数据库中。

有一种简单的方法可以转储utf8字符吗?

我已尝试遵循这些建议:I need help fixing Broken UTF8 encoding

但是让角色可视化的唯一方法是将它们打印在网页上并添加到顶部:

<html>      
    <head>
        <meta charset="UTF-8">
    </head>         
<body>

字段的整理是utf8_unicode_ci。 连接漏洞:

$options = array(\PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',);

编辑:@Álvaro-González尝试检索十六进制值

我在数据库中输入符号然后从phpmyadmin输入我选择:SELECT name, HEX(name) as hex_name FROM `items` 这就是结果:

名称â,¬ hex_name C3A2E2809AC2AC

我会根据要求提供任何进一步的信息 感谢

1 个答案:

答案 0 :(得分:0)

你想要?但是十六进制是C3A2E2809AC2AC。这是&#34;双重编码&#34; - 存储数据时。

请参阅Trouble with utf8 characters; what I see is not what I stored,特别是在关于&#34;双重编码&#34;的讨论中。

数据被破坏。您可以使用凌乱的UPDATE来修复数据。请参阅http://mysql.rjweb.org/doc.php/charcoll#example_of_double_encoding

修改

你原来的东西看起来像

CONVERT(BINARY(CONVERT('میثم اب' USING latin1)) USING utf8mb4)میثم اب   -- mojibake to ut8,