Замена символов в базе данных MySQL
Вопрос
Я перенес большую базу данных PHPBB3 из базы данных LATIN1 в UTF-8 Все прошло нормально, теперь мне нужно изменить «странные» символы в базе данных.Вчера нашел способ, который сработал, сейчас уже не могу найти, попробовал:
update phpbb_topics set topic_title = replace(topic_title, 'Ã', 'à');
update phpbb_topics set topic_title = replace(topic_title, 'è', 'è');
По сути, мне нужно заменить все символы Ã в поле таблицы на à и так далее.
Как вы можете это сделать?
Спасибо
Решение
обновить phpbb_topics set theme_title = replace(replace(topic_title, 'è', 'è'), 'Ã', 'à');
Вы должны ответить себе на следующие вопросы:
- какие двоичные данные хранятся в базе данных (используйте функцию ascii() или SELECT...В ПАМФАЙЛ)
- какие двоичные данные отправляются клиенту (они не всегда совпадают с сохраненными)
- как ваш клиент показывает полученные двоичные данные?(попробуйте разные клиенты и разные варианты)
Другие советы
Я бы сбросил его в файл .sql, а затем заменил символы sed или текстовым редактором (если файл не слишком большой).После этого вы запускаете скрипт еще раз.Возможно, есть способ сделать это напрямую в базе данных, но я его не знаю.
Проблема моего решения в том, что оно не атомарное.Изменения в БД между дампом и перепрошивкой теряются.
Приветствую Раффэль