Cменить кодировку в БД

РИ
На сайте с 28.01.2007
Offline
178
1376

Всем доброго времени суток!

Вот нашел косяк у себя, подскажите, как массово перевести всю базу в cp1251_general_ci?

Похоже, косяки с кодировкой в чате и другие на сайте, именно из-за этого.

И вообще, где и как это делается?

В самом PHP_Admin кодировка стоит cp1251_general_ci!

база БД

Serboy
На сайте с 29.09.2005
Offline
94
#1

Есть тулзы для конвертации баз, таблиц из кодировки в кодировку... Сейчас за Вас собирать ссылки лень, но по незатейливым запросам ранее находились. Посмотрите.. или подождите более конкретных ответов.

Mihajlo
На сайте с 30.10.2006
Offline
156
#2

делаете дамп существующей базы, а дальше из командой строки нечно вроде:

iconv -f cp1251 -t utf8 db.sql

ну а дальше восстанавливаете назад этот дамп

IQPartner
На сайте с 20.09.2007
Offline
138
#3

Если нет доступ к коммандной сторке, то только что тут выложил скрипт (2 файлика) и описал "Почему проблемы" и "Как работать" со скриптом. Знаний пхп не требуется.

С 2009-го меняю PayPal->WMZ за 8% (вывод с партнерок -7%) (/ru/forum/959037), Оплачу за вас PayPal за 0-3%. Слать Рaypal ТОЛЬКО на admin[/гаф-гаф\]israword.co.il - иначе это не я;
V
На сайте с 25.07.2006
Offline
128
#4
РусИван:
Всем доброго времени суток!
Вот нашел косяк у себя, подскажите, как массово перевести всю базу в cp1251_general_ci?
Похоже, косяки с кодировкой в чате и другие на сайте, именно из-за этого.
И вообще, где и как это делается?
В самом PHP_Admin кодировка стоит cp1251_general_ci!
база БД

Вполне вероятно, что сделать дамп такой базы не получится - реально в дампе будет присутствовать куча символов "знак вопроса".

Еще существует вероятность, что в базе УЖЕ одни знаки вопроса вместо букв - тут уже ничего не поможет, кроме старого бакапа.

В первом же случае можно попробовать поступить как описано в руководстве mysql в главе о функции alter table:

Сначала конвертим данные в бинарный формат - при этом реально никаких изменений в данных не происходит:

ALTER TABLE t1 CONVERT TO CHARACTER SET binary;

а затем конвертим из бинарного в требуемый

ALTER TABLE t1 CONVERT TO CHARACTER SET cp1251;

Данные фактически также остаются неизменными, только перегенерируются индексы.

Второй запрос может не сработать, тогда придется конвертировать каждое текстовое поле каждой таблицы отельной командой типа ALTER TABLE t1 CHANGE c1 c1 TEXT CHARACTER SET cp1251;

Сразу конвертить в cp1251 нельзя.

Приватный linux-администратор

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий