我有一个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;
这对我有用。
答案 0 :(得分:2)
您可以尝试SET NAMES
让latin-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/
使用此处列出的内容修复了我的所有问题。我将这个与我的实时数据一起使用,没有任何问题!