latin-1到utf-8数据库

时间:2012-01-16 11:47:44

标签: mysql database encoding utf-8 diacritics

我有一个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;

这对我有用。

3 个答案:

答案 0 :(得分:2)

您可以尝试SET NAMESlatin-1中的数据库与您的应用程序进行通信,同时存储在utf-8中,或者您需要将之前的所有数据集转换为utf-8 - 字符串

答案 1 :(得分: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 '%ß%';

答案 2 :(得分:1)

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

使用此处列出的内容修复了我的所有问题。我将这个与我的实时数据一起使用,没有任何问题!