Замена символов в базе данных MySQL

0

Я передал большую базу phpbb3 из базы данных latin1 в utf-8 Все прошло хорошо, теперь мне нужно изменить "странные" символы в базе данных. Вчера я нашел метод, который работал, теперь я больше не могу его найти, я попробовал:

update phpbb_topics set topic_title = replace(topic_title, 'Ã', 'à');
update phpbb_topics set topic_title = replace(topic_title, 'è', 'è');

В основном мне нужно изменить все символы Ã в поле таблицы на à и т.д.

Как вы можете это сделать?

Спасибо

  • 0
    Тот факт, что в вашей базе данных есть странные символы, говорит о том, что преобразование прошло не очень хорошо. На самом деле все пошло не так.
  • 0
    После быстрого поиска в Google ваш запрос кажется правильным. Поля не обновляются или что-то не так? Вы пытались сделать что-то довольно безопасное, например, поменять все вхождения «x» на « x »? Что-то, что вы видите, работает, но легко меняется?
Показать ещё 1 комментарий
Теги:
utf-8
phpbb3

2 ответа

1
Лучший ответ

update phpbb_topics set topic_title= заменить (заменить (topic_title, 'è', 'è'), 'Ã', 'à');

Вы должны ответить на следующие вопросы:

  • какие двоичные данные хранятся в базе данных (используйте функцию ascii() или SELECT... IN DUMPFILE)
  • какие двоичные данные отправляются клиенту (он не всегда совпадает с сохраненным)
  • как ваш клиент показывает полученные двоичные данные? (попробуйте разные клиенты и различные варианты)
0

Я бы сбросил его в .sql файл, а затем заменил символы sed или текстовым редактором (если файл не большой). После этого вы снова запустите script. Возможно, есть способ сделать это непосредственно в базе данных, но я не знаю.

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню