база данных от латыни-1 до utf-8 - PullRequest
9 голосов
/ 16 января 2012

У меня есть база данных, которая является uft8_general_ci, единственная проблема до тех пор, пока приложение, написанное предыдущим разработчиком, похоже, не работает с базой данных в latin-1.

С тех пор я изменил способ, которым приложение использует базу данных, и теперь могу хранить умляут как умлаут вместо ü. Проблема в том, что приложение считывает ранее существующие данные из базы данных как (пример) «Süddeutsche» вместо «Süddeutsche».

Есть ли способ конвертировать данные в базе данных из одного формата в другой?

Привет

Edit:

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 ]

2 голосов
/ 20 февраля 2012

try

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 голосов
/ 16 января 2012

Вы можете попробовать SET NAMES, чтобы база данных взаимодействовала с latin-1 с вашим приложением при сохранении в utf-8, или вам нужно будет преобразовать все предыдущие наборы данных в utf-8 -Strings

1 голос
/ 21 февраля 2012

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

Использование перечисленных здесь исправило все мои проблемы.Я использовал это с моими живыми данными, и у меня не было проблем!

...