Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MySQL > MySQL 5 и кодировка


Автор: Drache 27.7.2006, 13:53
from mysql 5.0.22 to mysql 5.0.18

В общем есть дамп БД. Сделала уже специально скриптом, т.к. надеяться на phpMyAdmin что-то больше не могу. В итоге файлик получается 100% в кодировке utf-8.
Все красиво пишется русскими буквочками, если просматривать в редакторе в режиме utf-8.
Далее пытаюсь запихнуть это все в другую БД (опять же с помощью скрипта, т.к. на phpMyAdmin тут уже вообще положиться никак не получается).
В начала даю запрос: set names 'utf8'. Потом беру запросы из фала-дампа и выполняю их с помощью мускуля. В итоге получаются вместо русских букв знаки вопросов. Если же выставить кодировку cp1251 вначале, то получаются хотя бы кракозяблики smile, но всеравно не то ... да и принцип такого поведения что-то не улавливаю.

В общем кто мне скажет где у меня сбивается здесь кодировка? Потому что мои предположения уже исчерпалиь. Если бы могла, я бы уже удушила этот мускуль с его кодировками после версии 4.1. .... 
 

Автор: skyboy 27.7.2006, 14:18
Drache, а чем ты вставляешь записи? какой программой? 

Автор: Ignat 27.7.2006, 14:20
Цитата(Drache @  27.7.2006,  14:53 Найти цитируемый пост)
set names 'utf8'

Ой... зря...

Стандартное решение
mysqldump dbname > dump.sql
mysql --database=dbname < dump.sql

Поверьте, все работает. 

Автор: Drache 27.7.2006, 16:00
Ignat, у меня нет возможности юзать mysqldump.

skyboy, на пхп скрипт написала и вставляю. 

Автор: Ignat 27.7.2006, 17:04
Цитата(Drache @  27.7.2006,  17:00 Найти цитируемый пост)
Ignat, у меня нет возможности юзать mysqldump.

Тогда так:
1. снимите дамп в 1251.
2. таблицу создайте в UTF-8
3. передзаливкой дампа - set names cp1251;
4. залейте, не перекодируя в utf
 

Автор: Drache 27.7.2006, 20:52
Ignat, ну как же так? smile
вообще-то у меня в БД не только символы, которые поддерживаются кодировкой cp1251. Так что они потеряются. Такой вариант не подходит. 

Автор: skyboy 28.7.2006, 00:24
Drache, как отправляешь данные, как принимаешь? скрипт имеет какой-нить фейс? или ты изменила ПХП-скрипт, сохранила, запустила, изменила ... и т.д.? Дело в том, что в зависимости от схемы работы проблемы могут быть:
а) в клиентской части(например, если работать с ВЕБ-фейсом, то IE отправляет данные формы в cp1251, даже если кодировка страницы - UTF-8)
б) в скриптовой части(мало ли, возможных вариантов не назову - опыт маловат, но отбрасывать возможность не стОит)
в) в части конфигурации БД... 
Так что выкладывай полній алгоритм, будем вместе искать smile 

Автор: Drache 28.7.2006, 01:24
исходные данные:
1. есть файл (напр. dump.sql) - кодировка utf-8
2. есть скрипт. неважно в какой он кодировке, т.к. никакие данные из него не берутся.

алгоритм:
1. читаем дамп с помощью file_get_contents()
2. с помощью preg_split() разбиваем полученные данные на массив запросов.
3. проходим в массиве запросы и выполняем их (mysql_query()).

все.
никаких форм, вообще никакого интерфейса. 

Автор: skyboy 28.7.2006, 08:14
Drache, ок. Попаду на работу - попробую проэкспериментировать. А пока выскажу вслух размышление: знаки вопроса будут, если вместо ожидаемой сервером Unicode передавать однобайтную(cp1251 или 866) кодировку, из которой сервер потом будет делать unicode простым слиянием ближайших двух байт. Вот и получается то, что потом отображается знаками вопроса. 

Автор: sayber 31.7.2006, 01:04
Кодировка ставится в настройка мускула.
Я тоже мучался с кодировкой. Но потом нашол в клиетне все нужные настройки. 

Автор: Ignat 31.7.2006, 08:48
Drache, можешь прикрепить пример дампа? 

Автор: Drache 31.7.2006, 13:46
В общем-то все кажется решилось. Оказывается моя версия phpMyAdmin почему-то вопросиками все выводила. Я попробовала скриптом считать и вывести на страницу данные и все нормально показывалось.
Так что наверно ложная тривога... 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)