【问题标题】:latin-1 to utf-8 databaselatin-1 到 utf-8 数据库
【发布时间】:2012-02-11 08:49:44
【问题描述】:

我有一个 uft8_general_ci 数据库,唯一的问题是到目前为止,由以前的开发人员编写的应用程序似乎一直在使用 latin-1 数据库。

我已经更改了应用程序使用数据库的方式,现在可以将变音符号存储为变音符号而不是 ü。现在的问题是应用程序从数据库中读取先前存在的数据作为(示例)“Süddeutsche”而不是“Süddeutsche”。

是否可以将数据库中的数据从一种格式转换为另一种格式?

问候

编辑:

ALTER TABLE TableName MODIFY ColumnName ColumnType CHARACTER SET latin1;
ALTER TABLE TableName MODIFY ColumnName ColumnType CHARACTER SET binary;
ALTER TABLE TableName MODIFY ColumnName ColumnType CHARACTER SET utf8;

这对我有用。

【问题讨论】:

标签: mysql database encoding utf-8 diacritics


【解决方案1】:

您可以尝试SET NAMES 让数据库在latin-1 中与您的应用程序对话,同时存储在utf-8 中,否则您需要将所有以前的数据集转换为utf-8-Strings

【讨论】:

    【解决方案2】:

    试试

    ALTER DATABASE your_db DEFAULT CHARACTER SET = 'utf8' COLLATE 'utf8_unicode_ci';
    

    ALTER TABLE a CONVERT TO CHARACTER SET 'utf8' COLLATE 'utf8_unicode_ci';
    
    ALTER TABLE b CONVERT TO CHARACTER SET 'utf8' COLLATE 'utf8_unicode_ci';
    ALTER TABLE c CONVERT TO CHARACTER SET 'utf8' COLLATE 'utf8_unicode_ci';
    

    不要忘记替换“ß”:

    UPDATE a SET field_1 = REPLACE(field_1, 'ß', 'ss') WHERE label LIKE '%ß%';
    

    【讨论】:

      【解决方案3】:

      http://blog.hno3.org/2010/04/22/fixing-double-encoded-utf-8-data-in-mysql/

      使用此处列出的内容已解决了我的所有问题。我将它与我的实时数据一起使用,没有任何问题!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-07-15
        • 2017-09-28
        • 1970-01-01
        • 1970-01-01
        • 2011-01-07
        • 1970-01-01
        • 2010-09-21
        • 2015-04-22
        相关资源
        最近更新 更多