Вопрос

Я перенес большую базу данных 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 или текстовым редактором (если файл не слишком большой).После этого вы запускаете скрипт еще раз.Возможно, есть способ сделать это напрямую в базе данных, но я его не знаю.

Проблема моего решения в том, что оно не атомарное.Изменения в БД между дампом и перепрошивкой теряются.

Приветствую Раффэль

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top