Страница 1 из 1

Выравнивение кодировки в таблицах сайта

Добавлено: 2008-11-17 14:09:01
Sanyh
Что можно сделать если таблицы в базе сайта получились в разных кодировках(некоторые таблицы в latin1 другие UTF8)
как можно сделать кодировку для всех таблиц 1251 притом чтобы отображение русских символов не постардало?

Re: Выравнивение кодировки в таблицах сайта

Добавлено: 2008-11-17 15:05:25
BlackCat
Решение "в лоб":
1. сделать читаемый дамп таблиц
2. пересоздать таблицы с правильными кодировками
3. импортировать дамп, с учетом кодировки файла-дампа

Может есть и более простые решения.

Re: Выравнивение кодировки в таблицах сайта

Добавлено: 2008-11-17 15:09:45
Sanyh
BlackCat писал(а):Решение "в лоб":
1. сделать читаемый дамп таблиц
2. пересоздать таблицы с правильными кодировками
3. импортировать дамп, с учетом кодировки файла-дампа

Может есть и более простые решения.
подробней можно?

Re: Выравнивение кодировки в таблицах сайта

Добавлено: 2008-11-17 16:01:12
BlackCat
Прежде чем пользоваться данным решением, ответьте утвердительно на следующие вопросы:
1. Данные еще возможно читать из базы? (т.е. сохранился осмысленный текст, а не сплошиные символы вопросов)
2. Таблиц не так уж и много, что бы вручную пошаманить с каждой?

Общий смысл в следующем:
1. достать все данные из БД в обычный текстовый файл,
2. перестроить структуру БД, указав нужную кодировку таблиц,
3. запхнуть данные назад в БД.

Если все нормально, то переходим к "выравниванию кодировок".
1. Делаем дамп таблиц с кодировкой UTF8 в один файл, с кодировкой latin1 в другой. Дамп делаем с помощью PHPMyAdmin или mysqldump'ом. Необходимо проследить за тем, что бы данные в файлах возможно было прочитать, т.е. указываем правильную кодировку.
2. Пересоздаем таблицы или изменяем кодировку существующих таблиц.
3. При импорте данных из файлов с помощью того же PHPMyAdmin указать правильную кодировку файлов.

А лучше всего почитать статью zg, о работе с кодировками MySQL.

Правильно проделав все вышесказаное вы получите БД в которой данные обрабатываются в cp1251, останется только убедиться что движек сайта нормально забирает данные из БД.

Re: Выравнивение кодировки в таблицах сайта

Добавлено: 2008-11-17 16:44:21
Sanyh
BlackCat писал(а):Прежде чем пользоваться данным решением, ответьте утвердительно на следующие вопросы:
1. Данные еще возможно читать из базы? (т.е. сохранился осмысленный текст, а не сплошиные символы вопросов)
2. Таблиц не так уж и много, что бы вручную пошаманить с каждой?

Общий смысл в следующем:
1. достать все данные из БД в обычный текстовый файл,
2. перестроить структуру БД, указав нужную кодировку таблиц,
3. запхнуть данные назад в БД.

Если все нормально, то переходим к "выравниванию кодировок".
1. Делаем дамп таблиц с кодировкой UTF8 в один файл, с кодировкой latin1 в другой. Дамп делаем с помощью PHPMyAdmin или mysqldump'ом. Необходимо проследить за тем, что бы данные в файлах возможно было прочитать, т.е. указываем правильную кодировку.
2. Пересоздаем таблицы или изменяем кодировку существующих таблиц.
3. При импорте данных из файлов с помощью того же PHPMyAdmin указать правильную кодировку файлов.

А лучше всего почитать статью zg, о работе с кодировками MySQL.

Правильно проделав все вышесказаное вы получите БД в которой данные обрабатываются в cp1251, останется только убедиться что движек сайта нормально забирает данные из БД.
1. данные читаемы т.к. сайт рабочий, токо находится на вдс и не правильно настроенном mysql
2. сайт - это форум Vbulletin

Re: Выравнивение кодировки в таблицах сайта

Добавлено: 2008-11-17 18:13:44
MAK
Sanyh писал(а):Что можно сделать если таблицы в базе сайта получились в разных кодировках(некоторые таблицы в latin1 другие UTF8)
как можно сделать кодировку для всех таблиц 1251 притом чтобы отображение русских символов не постардало?
кодировка latin1 не содержит кириллических символов. так что если туда уже пытались что-то кириллическое положить - эти данные наверно больше не достать. хотя я могу быть не прав.
указать в этих таблицах их правильную кодировку, и клиентом коннекится с нужной кодировкой для вывода - 1251.
это если нет запросов, затрагивающих таблицы с разными кодировками.
ну а по-хорошему, привести к одному виду. в данном случае к 1251.

Re: Выравнивение кодировки в таблицах сайта

Добавлено: 2008-11-17 18:33:55
zg
Sanyh писал(а): в базе сайта получились в разных кодировках(некоторые таблицы в latin1 другие UTF8)
в принципе это без разницы, если указана кодировка на соединение.
Sanyh писал(а):как можно сделать кодировку для всех таблиц 1251 притом чтобы отображение русских символов не постардало?
выставить кодировку UTF-8, сделать дамп, убрать любые упоминания об кодировках, импортировать в UTF-8, при каждом соединение выставлять кодировку cp1251. Вся информация будет храниться в UTF-8, но клиент будет получать cp1251.
MAK писал(а): хотя я могу быть не прав.
прав, все кирилистические символы заменятся на вопросы
BlackCat писал(а):1. Делаем дамп таблиц с кодировкой UTF8 в один файл, с кодировкой latin1 в другой
гм.. вроде как, если выставить UTF8, этого можно не делать, хотя не пробовал :smile: