Название: Пипец: Qt-4.1.4 ODBC unixODBC кодировки Отправлено: Deiv от Октябрь 03, 2006, 07:04 В search не посылать, уже был.
Qt плотно никогда не занимался /китайское предупреждение/ Ладно, к делу Есть база на отдельной машине Кодировка базы /внутри сервера бд/ CP866 Ситуация 1: работа с этой базой с линукс машины unixODBC & ODBC Driver DB в настройках драйвера указываются параметры /etc/odbc.ini DB_LOCALE=ru_RU.866 CLIENT_LOCAL=ru_RU.KOI-8 параметры обязательные конвертирование осуществляет сам драйвер isql DSN login password коннектимся, делаем запросы - все данные в нужной нашей локали кодировке koi8-r Пробуем поработать с этим DSN QT-демкой demos/sqlbrowser Бац - кракозябы. Читаем этот форум, видим нужно делать QTextCodec *codec=QTextCodec::codecForName("KOI8-R"); QTextCodec::setCodecForCStrings(codec); Делаем, пробуем. Бац - псевдографика. непонял? :oops: Применяем научный тык - при "codecForName("CP866");" все начниет работать правЕльно :roll: Ситуация 2: работа с этой базой с win32 машины настройки DSN аналогично за исключением CLIENT_LOCAL=ru_RU.utf8 смотрим в msquery результат запроса - всё в нужной нам кодировке 1251 пробуем demos/sqlbrowser - кракозябы патчим его с QTextCodec::codecForName("windows-1251"); Бац - псевдографика. непонял? :oops: Применяем научный тык - при "codecForName("CP866");" все начниет работать правЕльно :roll: Какого х...я qt обходит настройки драйвера Интересно как она это делает Никто не сталкивался? Может у меня пальцЫ кривые? Или извилины прямые? Название: Пипец: Qt-4.1.4 ODBC unixODBC кодировки Отправлено: bigirbis от Октябрь 03, 2006, 08:50 Вообще, ИМХО, достаточно странное шаманство. Просто Гуевая часть Qt должна принимать данные в формате Unicode. Поэтому, создай кодек
QTextCodec * codec = QTextCodec::codecForLocale(); а потом вызови codec->toUnicode( str ); |