URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 90248
[ Назад ]

Исходное сообщение
"Проблема с кодировкой в MySQL"

Отправлено silent79 , 09-Ноя-10 20:40 
Доброго времени суток. Прошу прощения, если добавил не туда куда надо.
У меня такая проблема. Для примера приведу вот такую таблицу
CREATE TABLE `fillist` (
  `id` int(15) NOT NULL AUTO_INCREMENT,
  `pref` varchar(3) DEFAULT NULL,
  `prefid` varchar(2) DEFAULT NULL,
  `fil` varchar(100) DEFAULT NULL,
  `del` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `prefid` (`prefid`),
  KEY `del` (`del`)
) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=cp1251;

Сервер 5.1.52-community, установлена кодировка cp1251. Использую MyODBC 5.1.52. Подключаюсь к БД из СУБД Visual FoxPRO.

В настройках ODBC также установлена кодировка cp1251.

И теперь запрос.
select concat(pref,id) as pref, fil from fillist
на выходе получаю вот такое
pref    fil
??-1    Отдел проектирования
??-2    Пробный отдел
??-3    Отдел автоматизации

Потом в настройках ODBC меняю кодировку на latin1 и отрабатываю тот же самый запрос, и получаю
pref    fil
ПП-1    ????? ??????????????
УК-2    ??????? ?????
ВД-3    ????? ?????????????

Вот такая у меня проблема, т.е. везде, где использую concat(), причем данные разного типа происходит такая бяка. И не могу понять где проблема, или в настройках драйвера ODBC, или в настройках самого MySQL сервера.

Подскажите пожалуйста куда копать...


Содержание

Сообщения в этом обсуждении
"Проблема с кодировкой в MySQL"
Отправлено PavelR , 09-Ноя-10 21:53 
> В настройках ODBC также установлена кодировка cp1251.
> Потом в настройках ODBC меняю кодировку на latin1 и отрабатываю тот же
> самый запрос, и получаю
> Подскажите пожалуйста куда копать...

Прекратите выставлять latin1 в настройках ODBC


"Проблема с кодировкой в MySQL"
Отправлено silent79 , 09-Ноя-10 22:12 
> Прекратите выставлять latin1 в настройках ODBC

:) если внимательно посмотреть на мое сообщение, то там видно в чем проблема. В первом случае используется кодировка cp1251 и первый столбец получается из concat(pref,id), а второй просто поле из таблицы. в первом столбце получаются данные типа ??-1, а во втором то, что надо.

Когда меняю кодировку на latin1 в настройках ODBC, то выборка получается наоборот - первый столбец как надо, а второй "вопросиками"