Russian Qt Forum
Ноябрь 22, 2024, 11:57 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Кодировка сообщений об ошибках в PostgreSQL  (Прочитано 8015 раз)
AlexEx
Чайник
*
Offline Offline

Сообщений: 76


Просмотр профиля
« : Март 04, 2021, 18:04 »

Вопрос не совсем Qt-шный, но, может, кто подскажет. Есть примитивная тестовая программа, работающая с сервером PostgreSQL через библиотеку libpqxx. Ошибки pqxx::connection прилетают в кодировке Windows-1251, ошибки pqxx::work – UTF-8. Хотелось бы иметь все ошибки в единой кодировке или хотя бы понять, когда какую использовать для вывода  пользователю. В файле postgresql.conf есть нужная настройка lc_messages =…, меняющая, по идее, язык и кодировку. Вот только кодировку pqxx::connection для русского языка сменить не удается, т.е. lc_messages = 'Russian_Russia.1251' – русский язык, кодировка Win 1251, lc_messages = 'en_us.utf-8' – английский язык, lc_messages = ''Russian_Russia.utf-8' – все та же Win 1251.
Записан
Hellraiser
Бывалый
*****
Offline Offline

Сообщений: 451


Просмотр профиля
« Ответ #1 : Март 04, 2021, 18:48 »

Это общая проблема организации подключения к PostgreSQL, в том числе и в Qt. До момента подключения драйвер не знает кодировки сервера, которую можно узнать только после подключения, и считает что используется кодировка Win-1251 (в Qt используется QString::fromLocal8Bit). Если сам сервер настроен на UTF-8 и использует язык, отличный от en, то будут крякозябры.
« Последнее редактирование: Март 04, 2021, 18:50 от Hellraiser » Записан
AlexEx
Чайник
*
Offline Offline

Сообщений: 76


Просмотр профиля
« Ответ #2 : Март 04, 2021, 19:28 »

Тогда не совсем понятно, если lc_messages = 'Russian_Russia.1251', то почему ошибки pqxx::work в UTF-8. В кодировке БД? Она, действительно, UTF-8. Язык в зависимости от lc_messages меняется, а кодировка - нет. Что зависит от кодировки, указанной в lc_messages?
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.051 секунд. Запросов: 23.