@semechki
Я не фрилансер, просто пишу код для себя.

Есть ли возможность перекодировать latin1 в utf-8?

На хостинге очень давно стояла кодировка latin1, решила заглянуть в базу, а там вместо русских символов кракозябры
Поняла в чём причина, но не знаю как исправить и перекодировать latin1 в utf-8 без потери самой базы...
Как это сделать правильно, чтобы ничего не поломалось?
  • Вопрос задан
  • 98 просмотров
Пригласить эксперта
Ответы на вопрос 1
sergey-kuznetsov
@sergey-kuznetsov
Автоматизатор
Сохраняем резервную копию базы в файл
mysqldump --user=USERNAME -p --default-character-set=latin1 -c --insert-ignore --skip-set-charset -r file.sql DATABASE_NAME

Преобразовываем в UTF-8
iconv -f utf8 -t cp1252 file.sql | iconv -f cp1251 -t utf8 | sed -e 's/latin1/utf8/g' > file-utf8.sql

Опустошаем базу
mysql --user=USERNAME -p --execute="DROP DATABASE DATABASE_NAME; CREATE DATABASE DATABASE_NAME CHARACTER SET utf8 COLLATE utf8_general_ci;"

Заливаем исправленную базу
mysql --user=USERNAME --max_allowed_packet=16M -p --default-character-set=utf8 DATABASE_NAME < file-utf8.sql

Как-то так
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы