Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: MySql + кодировки  (Прочитано 896 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Lojaleto

  • Автор темы
  • Новичок
  • *
  • Сообщений: 44
    • Просмотр профиля
MySql + кодировки
« : 13 Май 2014, 15:00:49 »
Доброго всем времени!
Была похожая тема:
https://forum.ubuntu.ru/index.php?topic=25543.0
но всюду эту проблему решают установкой кодировки по умолчанию windows-1251 (cp-1251)
в моем случае этого недостаточно..

на сервере сайты с кодировкой UTF-8,
требуется добавить сайты с кодировкой windows-1251
однако доступ к консоли есть только на конечном сервере,
на исходном только php дамперы базы.. поэтому по джедайски не получится..
есть хостеры на FreeBSD у которых все работает при простейшем копировании и php дампе..
поэтому осмелюсь подозревать свой сервер в недостатках настроек mysql..

вопрос:
- как заставить mysql с одинаковым удовольствием жевать базы на кодировках 1251 и U8 ?

Оффлайн unimix

  • Активист
  • *
  • Сообщений: 537
    • Просмотр профиля
Re: MySql + кодировки
« Ответ #1 : 13 Май 2014, 19:29:28 »
Что-то не понятно, что такое php дамп.

Есть кодировка, в которой находится дамп.
Есть кодировка у таблиц базы данных.
Есть настройки кодировки MySQL сервера (collation-server, character-set-server, skip-character-set-client-handshake).
Есть возможность настроить кодировку соединения PHP с MySQL сервером (mysqli_set_charset, mysqli::set_charset и т.д.)
Есть возможность настраивать соединение с помощью SQL ('SET NAMES', 'SET CHARACTER SET').

В чём трудности?


Оффлайн Lojaleto

  • Автор темы
  • Новичок
  • *
  • Сообщений: 44
    • Просмотр профиля
Re: MySql + кодировки
« Ответ #2 : 13 Май 2014, 21:47:22 »
Что-то не понятно, что такое php дамп.

Есть кодировка, в которой находится дамп.
Есть кодировка у таблиц базы данных.
Есть настройки кодировки MySQL сервера (collation-server, character-set-server, skip-character-set-client-handshake).
Есть возможность настроить кодировку соединения PHP с MySQL сервером (mysqli_set_charset, mysqli::set_charset и т.д.)
Есть возможность настраивать соединение с помощью SQL ('SET NAMES', 'SET CHARACTER SET').

В чём трудности?



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

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

Оффлайн unimix

  • Активист
  • *
  • Сообщений: 537
    • Просмотр профиля
Re: MySql + кодировки
« Ответ #3 : 14 Май 2014, 00:58:43 »
Сам файл дампа должен быть в той кодировке, в которой находятся таблицы. Желательно, чтобы у таблиц были настройки кодировки.
DEFAULT CHARSET=cp1251 COLLATE=cp1251_general_ci
DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci

В PHP скриптах (или где там настраивается в конфигах) соединение должно быть с нужной кодировкой. Если HTML выводится в utf8, значит должно соединяться с использованием utf8, если HTML выводится в cp1251, то соответственно и соединение должно быть cp1251.

Делаешь дамп, заливаешь в свою базу, соединяешься с нужной кодировкой. И всё.

Что там за дамперы, какие опции и что там получается в результате я не буду гадать. Имеется ли возможность настраивать кодировку соединения в PHP скриптах, также не буду гадать.

Так что на вопрос
Цитировать
как заставить mysql с одинаковым удовольствием жевать базы на кодировках 1251 и U8 ?

ответ: не использовать кодировку соединения с базой по умолчанию ( latin1 ), а использовать нужную в конкретном случае. При дефолтной настройке MySQL в Ubuntu всё уже настроено нормально.
« Последнее редактирование: 14 Май 2014, 01:10:09 от unimix »

Оффлайн Lojaleto

  • Автор темы
  • Новичок
  • *
  • Сообщений: 44
    • Просмотр профиля
Re: MySql + кодировки
« Ответ #4 : 14 Май 2014, 12:15:12 »
Ок.. принял..
позже буду пробовать еще..
результаты будут тут, т.ч. не закрывайте пока..

Оффлайн Lojaleto

  • Автор темы
  • Новичок
  • *
  • Сообщений: 44
    • Просмотр профиля
Re: MySql + кодировки
« Ответ #5 : 18 Июнь 2014, 10:22:40 »
Разобрался..
Изначально мне был выслан backup сделанный phpMyadmin, с которым и была проблема..
хостинг на который я перекинул временно сайт по всей видимости крутится на чем весьма быстром, и отлаженном, поэтому успешно скушал..
с моей маленькой машинкой вообще не так.. phpMyadmin"овский backup у меня залить не получилось вовсе, вероятно из за малых мощностей и разумных ограничений, а механизм продолжения восстановления встроенный в phpMyadmin не отрабатывает..
Мой вердикт. Для успешного переноса MySQL базы сайта:
- Следите за соответствием кодировки базы,
- Следите за соответствием кодировки файла,
- Используйте одну программу, одной версии - для backup"а и восстановления,
- Не используйте для этого phpMyadmin, рекомендую кстати SXD.

--
ЗЫ у меня был только phpMyadmin'овский файл backup'а, я с временного хостинга переносил программой SXD, давно ей пользуюсь..
« Последнее редактирование: 18 Июнь 2014, 10:25:53 от Lojaleto »

 

Страница сгенерирована за 0.1 секунд. Запросов: 24.