0

我有一个(标志)UTF8 问题。这是正在发生的事情:

  • 该数据库已有 6 或 7 年的历史。我正在让网站恢复生机,但我在 UTF8 编码方面运气不佳。编辑编辑:在再次刺伤后,我设法使大部分角色工作,例如 Grüßgott 现在工作。但是,我仍然在卷曲的单引号和双引号上得到黑色钻石。

  • 我做了一堆stackoverflow搜索并尝试了很多东西。

  • 我正在处理的本地开发数据库是使用 UTF8 和 utf8_general_ci 设置的。我已经手动将每个表从 latin1_general_ci_as 转换为 utf8_general_ci 并将图表集更改为 UTF8。其中一些不适用于查询,因此我手动进行了表格设计,然后似乎解决了它。我意识到某些表 COLUMNS 可以(并且在我的关心中)设置为 latin1_general_ci_as,但我已经用 1 段特定代码做一个测试用例,并且(博客)绝对是 UTF8。

  • 数据库连接设置如下:

    $connection = mysql_connect($DB_SERVER, $DB_USER, $DB_PASS);
    mysql_query("SET character_set_results=utf8", $connection);
    mb_language('uni'); 
    mb_internal_encoding('UTF-8');
    mysql_select_db($DB_NAME, $connection);
    mysql_query("SET names 'utf8'",$connection);
    
  • 该网站是程序PHP。在 functions.php 文件中,它从数据库中选择数据,如下所示。我展示这一点的唯一原因是在我的阅读中我看到有些人说你需要每次都设置一些东西,但我真的希望你不需要每次想要从数据库中获取一些东西时都声明一些东西.

    query("SELECT * FROM table_name WHERE data='$something[unique]'");
    
  • 该网站是 HTML5,我在 header.php 中有这个。据我所知,这一切都很好。

    <?
    header('Content-Type: text/html; charset=utf-8');
    ?>
    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8">
    

所以,这就是我所在的地方。我真的很想一劳永逸地解决这个问题,而不必再担心了。非常感谢任何帮助或想法。

4

1 回答 1

0

您可以尝试使用 mysqldump 将 ISO-8859-1 转换为 utf-8:

mysqldump --user=username --password=password --default-character-set=latin1 --skip-set-charset dbname > dump.sql
chgrep latin1 utf8 dump.sql (or when you have.   sed -i "" 's/latin1/utf8/g' dump.sql) 
mysql --user=username --password=password --execute="DROP DATABASE dbname; CREATE DATABASE dbname CHARACTER SET utf8 COLLATE utf8_general_ci;"
mysql --user=username --password=password --default-character-set=utf8 dbname < dump.sql
于 2013-11-14T17:02:16.507 回答