Камрады, сложилась ситуация, в которой я уже голову сломал.
Есть сайт на стороннем хостинге, у хостера есть phpMyAdmin.
Есть скрипт, который выгружает данные из 1С и скрипт-дампер на сайте, который заливает выгрузку на сайт.
В майадмин везде кодировки выставлены 1251.
Дамп, выгружаемый из 1С затрагивает только таблицы виртумарта, установленного на сайте.
Если дамп заливать через майадмин, принудительно выставив ему кодировку 1251 - все ок.
Если дамп заливать через дампер - кодировка разделов и товаров в виртумарте сбивается.
Не могу понять где собака порылась. Дампер вроде бы просто болванчик, который не выставляет свою кодировку, т.е. кодировка определяется сервером, на котором крутится база. На старом хостинге все работало на ура, т.е. самому дамперу и не нужно было выставлять кодировку данным. Но настройки mysql там посмотреть возможности уже нет.
Кто в теме - куда копать?
при создании базы имеют одну кодировку
при записи этих данных в базу они могут иметь другую кодировку
при дампе, по идее выливать должен в кодировку по-умолчанию консоли
при майскульадм дампе должен выливать в кодировку базы данных
При заливании базы - то же самое
дамп имеет одну кодировку, база может иметь другую
Все будет хорошо, когда все эти кодировки начнут соответствовать .
Цитата: old-guy от 13:20, 10 июня, 2014
при создании базы имеют одну кодировку
при записи этих данных в базу они могут иметь другую кодировку
при дампе, по идее выливать должен в кодировку по-умолчанию консоли
при майскульадм дампе должен выливать в кодировку базы данных
При заливании базы - то же самое
дамп имеет одну кодировку, база может иметь другую
Все будет хорошо, когда все эти кодировки начнут соответствовать .
Да я вроде конвертнул базу, проверил все таблицы, в майадмине изменил кодировку соединения. Кодировка сервера - по умолчанию UTF8 - c ней ничего не сделаешь. Самое интересное, что на локальном денвере - все работает нормально, а на хостинге - нет. Из чего я делаю вывод что проблема именно в настройках сервера БД и кодировках самой БД. Но что еще можно накрутить - ума не приложу.
Либо, как вариант - зайти с другой стороны и искать дампер, который мог бы конвертить кодировку заливаемого дампа. Sypex Dumper это умеет, но при заливке 1С-ного дампа он выполняет его пока не отвалится по таймауту (таймаут - 10 минут). Шкала выполнения доходит до 100%, но вот что-то не жует он эти дампы, хотя свои собственные - за милисекунды перезаливает.
дампаем базу
mysqldump --hex-blob --user=root --password=password --host=mybox mydatabase --default-character-set=latin1 > mydatabase.latin1.sql
изменяем команду с заголовком кодировки
sed -e 's/latin1/utf8/g' mydatabase.latin1.sql > mydatabase.utf8.sql
конвертируем из cp1251 в utf8
iconv -f cp1251 -t utf8 mydatabase.utf8.sql > mydatabase.utf8.sql
потом пробуем заливать