Как конвертировать кодировку БД

Статус
В этой теме нельзя размещать новые ответы.

Scaltro

Гуру форума
Регистрация
15 Сен 2007
Сообщения
1.148
Реакции
79
Помогите пожалуйста, возникла проблема, установил я короче джумлу, малость контентом наполнил, а потом посмотрел в пхпмайадмин и увидел что кодировка и сравнение всех таблиц MySQL в latin1_swedish_ci, а мне позарез нужно чтобы кодировка базы была в cp1251_general_ci, подскажите пожалуйста как конвертировать всю базу и таблици в нужную мне кодировку? :bc:
 
нужно поменять кодировку таблицы и полей в ней, например, через phpMyAdmin (у хостера обычно стоит такая панель)
 
А как это сделать то, в пхпмайадмин не нашёл такого :nezn:

Добавлено через 32 минуты
Вот нашёл какое то решение, но не знаю как риализовать, помогите чайнику пожалуйста:

Описание проблемы

Допустим, у Вас есть база данных MySQL с кодировкой latin1. В ней не работает сортировка, русский текст не видно в phpMyAdmin и так далее. Вы хотите перевести её в правильную кодировку — cp1251, в которой фактически и находятся данные в базе. Однако простого способа это сделать нет.

Решение

-Делаем полный бэкап базы.
-С помощью скрипта fixmyenc, текст которого приводится ниже, выполняем следующее:


Если не происходит никаких ошибок, создаётся файл fixdb.sql — скрипт на языке sql, которым мы и будем чинить базу.
-(необязательно) Просматриваем созданный файл.
-Выполняем содержащиеся в нём SQL-запросы:

-Если и на этом этапе нет никаких ошибок — значит наша база успешно перекодирована. Если ошибки были — восстанавливаем базу из бэкапа, созданного перед началом работы, и сообщаем об ошибке (с её полным текстом) например на страницу обсуждения.

Важно: Скрипт fixmyenc написан так, что при малейшей проблеме останавливает свою работу с ошибкой и не создаёт sql-скрипта. Это сделано специально (и не составляет проблемы, поскольку в самой базе при этом ничего не меняется), однако о каждой такой проблеме тоже очень желательно сообщить. После сообщения об ошибке скрипт будет исправлен и новый текст выложен здесь же.

Принцип работы

-Все полнотекстовые индексы (FULLTEXT KEY) удаляются и в конце пересоздаются.
-CHARACTER SET и COLLATION самой базы, всех таблиц и всех текстовых полей в таблицах меняются сначала с latin1 на binary, а затем с binary на cp1251_general_ci (если бы мы попытались изменить кодировку напрямую из latin1 в cp1251, то MySQL не нашёл бы символов, соответствующих верхней части latin1, в cp1251, и просто заменил бы их знаками вопроса, в результате чего все русские буквы были бы безвозвратно потеряны).

Текст скрипта fixmyenc

 
нужно поменять кодировку таблицы и полей в ней, например, через phpMyAdmin (у хостера обычно стоит такая панель)

Через phpMyAdmin кодировку таблиц то ты меняешь, а сам контент базы остаётся в прежней кодировке!!! :nezn:
 
1. через pma меняешь кодировку подключения к БД
2. скачиваешь дамп базы, открываешь в текстовом редакторе, заменяешь все вхождения "Default Charset XXX" на "Default Charset YYY"
3. Заливаешь дамп обратно в базу
 
Можно воспользоваться бесплатной прогой под винду mreplace
 
Короче ладно, всем спасибо кто пытался хоть как то помоч, я сам нашёл замечательный способ конвертирования базы MySQL, довольно всё успешно прошло :)
 
ну так и поделился бы со всеми этим замечательным способом
 
Короче способ простой, делаете бакап базы с помощю дампера, который я прикрепил во вложении, открываете этот бакап в любом текстовом редакторе, я использовал PHP Expert Editor, и меняете все DEFAULT CHARSET=latin1 */; (вместо latin1 может быть любая другая кодировка) на DEFAULT CHARSET=cp1251 */; , можно открыть в MS Word, там есть функция найти и заменить всё, затем сохраняете получившийся бакап и спомощюь же дампера востанавливаете базу из сохранённого файла, вся база и таблици получаются в кодировке cp1251, включая контент, радуемся :yahoo:

Если кому помог, говорим спасибо кнопочкой ;)
 

Вложения

  • dumper.rar
    10,1 KB · Просмотры: 37
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху