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

MySQL/PostgreSQL/SQLite/Oracle/M$SQL/....

Модератор: terminus

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Sanyh
сержант
Сообщения: 152
Зарегистрирован: 2008-02-13 8:42:54

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

Непрочитанное сообщение Sanyh » 2008-11-17 14:09:01

Что можно сделать если таблицы в базе сайта получились в разных кодировках(некоторые таблицы в latin1 другие UTF8)
как можно сделать кодировку для всех таблиц 1251 притом чтобы отображение русских символов не постардало?

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
BlackCat
прапорщик
Сообщения: 469
Зарегистрирован: 2007-10-16 22:40:42

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

Непрочитанное сообщение BlackCat » 2008-11-17 15:05:25

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

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

Sanyh
сержант
Сообщения: 152
Зарегистрирован: 2008-02-13 8:42:54

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

Непрочитанное сообщение Sanyh » 2008-11-17 15:09:45

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

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

Аватара пользователя
BlackCat
прапорщик
Сообщения: 469
Зарегистрирован: 2007-10-16 22:40:42

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

Непрочитанное сообщение BlackCat » 2008-11-17 16:01:12

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

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

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

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

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

Sanyh
сержант
Сообщения: 152
Зарегистрирован: 2008-02-13 8:42:54

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

Непрочитанное сообщение Sanyh » 2008-11-17 16:44:21

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

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

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

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

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

MAK
ст. сержант
Сообщения: 344
Зарегистрирован: 2008-09-17 2:23:21

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

Непрочитанное сообщение MAK » 2008-11-17 18:13:44

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

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

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

Непрочитанное сообщение zg » 2008-11-17 18:33:55

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