Как изменить кодировку базы данных на UTF-8
Встала задача сконвертировать базу данных из latin1 в utf8. В интернете есть множестово рецептов как это сделать. Наиболее часто встречается PHP скрипт, который генерирует последовательность из ALTER TABLE комманд.
Мне такой способ показался несколько громоздким, гораздо проще сделать дамп базы данных, убрать из дампа всю информацию о кодировке столбцов, если такая имеется, изменить кодировку базы данных по умолчанию и залить дамп обратно. При этом все таблицы и столбцы примут ту кодировку, которая выставлена для базы данных в целом.
Делать эти преобразования вручную на живой базе довольно стрёмно - данные могут измениться между шагами, поэтому я создал вот такой скрипт для выполнения данной задачи:
#!/bin/sh DBNAME="yourdbname" DBUSER="yourdbuser" DBPASS="yourdbpassword" mysqldump -u$DBUSER -p$DBPASS $DBNAME > $DBNAME.sql sed 's/DEFAULT CHARSET=latin1//' $DBNAME.sql > ${DBNAME}_converted.sql sed 's/CHARACTER SET latin1//' ${DBNAME}_converted.sql > ${DBNAME}_converted1.sql mysql -u$DBUSER -p$DBPASS $DBNAME <<EOFMYSQL ALTER DATABASE $DBNAME DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; EOFMYSQL mysql -u$DBUSER -p$DBPASS $DBNAME < ${DBNAME}_converted1.sql
Исходная база была в latin1, если у вас другая кодировка, скрипт легко подправить.
разрешены только теги br, font, span, p, strong, u, p, blockquote, a, div, img - остальные будут безжалостно удаляться
комментарии: