Модераторы: LSD
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Кодировка в Linux при запросе из Postgres 
:(
    Опции темы
Romch
Дата 15.9.2005, 11:05 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Столкунлся со следующей проблемой.
Использую в качестве сервера БД PostgreSQL 8, расположенный под WinXp SP2. В качестве клиента - программа на Си под Линукс.
Использую напрямую функции интерфейса odbc.

Код

 if (setlocale(LC_ALL,"ru_RU.koi8r")==NULL)
    {
    printf("Cannot set locale to koi8r!\n");
    }
......
char city[20];
char station[40];
res=SQLExecDirect(hstmt,(SQLCHAR*)query,SQL_NTS);
SQLBindCol(hstmt,2,SQL_C_CHAR,city,20,&err);
SQLBindCol(hstmt,3,SQL_C_CHAR,station,40,&err);
for(int j=0;j<rows;j++)
{
    fprintf(fp,"%s%s\n",city,station);
}


Приведённый код выводит в файл данные в кодировке UTF8. Несмотря на принудительное установление локали. Тем не менее, данная программа скомпилировання под WinXp корректно выводит в файл в кодировке cp1251.
Подозреваю, что это особенность odbc-драйвера для постгрес под линукс. Или в чём проблема? И как её решать?

Это сообщение отредактировал(а) Romch - 15.9.2005, 11:15
  Вверх
Kurt
Дата 16.9.2005, 22:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Увлеченный
***


Профиль
Группа: Участник Клуба
Сообщений: 1662
Регистрация: 22.8.2003
Где: Краснодар

Репутация: нет
Всего: 36



Хм..
Я слабо разбираюсь в Си, но хотел бы спросить:
setlocale(LC_ALL,"ru_RU.koi8r") - устанавливает кодировку для чего? Для Си-программы? А PostgreSQL-сервер ей выдает данные в UTF?
Возможно, стоит переконвертирвать эти данные в нужную локаль? Я не знаю, как с ODBC, но посмотри здесь секцию Automatic Character Set Conversion Between Server and Client
Надеюсь, поможет.


--------------------
Для корабля, который не знает куда плыть, нет попутного ветра... ((С) Архимед)
...
Все знают, что это невозможно. Но случайно находится невежда, который этого не знает. Он-то и делает открытие.. ((С) А. Эйнштейн)
PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Общие вопросы по базам данных"
LSD
Zloxa

Данный форум предназначен для обсуждения вопросов о базах данных не попадающих под тематику других форумов:

  • вопросам по СУБД для которых нет отдельных подфорумов
  • вопросам которые затрагивают несколько разных СУБД (например проблема выбора)
  • инструменты для работы с СУБД
  • вопросы проектирования БД
  • теоретически вопросы о СУБД

Данный форум не предназначен для:

  • вопросов о поиске разлиных БД (если не понимаете чем БД отличается от СУБД то: а) вам не сюда; б) Google в помощь)
  • обсуждения проблем с доступом к СУБД из различных ЯП (для этого есть соответсвующие форумы по каждому ЯП)
  • обсуждения проблем с написание SQL запросов, для этого есть форум Составление SQL-запросов
  • просьб о написании курсовой, реферата и т.п., для этого есть Центр помощи или фриланс биржа
  • объявлений о найме специалистов, для этого есть раздел Объявления о найме специалистов

Если вы не соблюдаете эти правила, не удивляйтесь потом не найдя свою тему/сообщение. ;)


Полезные советы:

При написании сообщения постарайтесь дать теме максимально понятное название. В теме максимально подробно опишите проблему. Если применимо укажите: название базы данных и версии (MySQL 4.1, MS SQL Server 2000 и т.п.); используемых язык программирования; способа доступа (ADO, BDE и т.д.); сообщения об ошибках.

Для вставки кода используйте теги [code=sql] [/code].

Литературу по базам данных можно поискать здесь.

Действия модераторов можно обсудить здесь.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, LSD, Zloxa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | СУБД, общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0382 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.