LINUX.ORG.RU

Qt3.0.5+PostgreSQL+русификация


0

0

Возможно, проблема проста и не нова, но, если кто-то поможет, буду благодарен. Мои знакомые программисты решили перейти на RedHat 8.0. Там кодировка UTF-8. Русские буквы в программах перебили (не поленились). Возникла проблема при работе с БД(PostgreSQL). В базу внесли данные на русском через утилиту psql. Все легло вроде нормально (залезли в саму БД, текст лежит в Unicode). Та же утилита нормально показывает содержимое на консоли. Но при обращении из программы (через Qquery и далее .value(0).toString(), пишу примерно) считываемые данные, похоже, теряют верхние байты, и на экран, естественно, вместо русских букв выводится мусор. Вместо экрана сбрасывали в файл, эффект тот же. Как это дело победить ? (похоже, что-то в Qt или KDeveloper-е). Или вообще отказаться от Unicode и работать с KOI-8 ? (на форуме об этом говорится немало, но мы в системные настройки до сих пор не очень вдавались). Если надо просто что-то прочесть, подскажите, где. Заранее благодарен.

anonymous

возьми "прямые" постгресовые интерфейсы, а то работать с ним через куте - все равно что "автогеном через зад" :) Насчет уникода - это на любителя, по мне так лучше кои8, да и места меньше требуется.

PETER ★★
()

SET CLIENT ENCODING - то, чтовам нужно

Слыхали о такой возможности? при открытии соединения с БД нужно просто сказать, в какой кодировке работает клиент. Напр,: SET CLIENT ENCODING TO 'WIN' - для виндовозных клиентов, 'KOI8' - понятно что, 'UNICODE' - тоже понятно что.

Удачи.

ЗЫ: для этого пгре нужно собрать с ключом --enable-recode

NewComer
()

SET CLIENT ENCODING - то, чтовам нужно

Слыхали о такой возможности? при открытии соединения с БД нужно просто сказать, в какой кодировке работает клиент. Напр,: SET CLIENT ENCODING TO 'WIN' - для виндовозных клиентов, 'KOI8' - понятно что, 'UNICODE' - тоже понятно что.

Удачи.

ЗЫ: для этого пгре нужно собрать с ключом --enable-recode

NewComer
()
Ответ на: комментарий от ananas

Большое всем спасибо. Первый раз вышел на такой форум и не пожалел. На самом деле все рекомендации примерно одного плана. Просто возможностей масса. Так, о переменной окружения я не знал. Я же посоветовал создать базу с параметром -R UNI (есть на уровне CREATE DATABASE, но они сделали круче - на initdb). Как ни странно, помогло, хотя я был почти уверен, что бесполезно. Еще бы понять, почему.

anonymous
()

Я бы отметил последнее как недостаток постгреса, а не достоинство, хотя при желании можно поправить. Просто в базу при initdb записываются настройки локали для правильной работы libc. А вся нужная инфа находится в доках, в тарболе постгреса.

PETER ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.