Название: PostgreSQL и кодировка сообщений Отправлено: Naihil от Июнь 08, 2016, 12:44 Добрый день!
Помогите разобраться в след. вопросе. Есть виртуалка дебиан 8 с постгресом 9.4, энкодинг кластера утф-8, энкодинг базы тоже утф-8, lc_messages = 'ru_RU.UTF-8' При успешном подключении к базе из приложения текст и сообщения постгреса нормально читаются, проблем нет. Если попытаться подключиться с неправильными логин/пароль, то выдаётся ошибка Код: "Р’РђР–РќРћ: пользователь \"test1\" РЅРµ прошёл проверку подлинности (РїРѕ паролю)\nQPSQL: Unable to connect" Начал копать. В исходниках драйвера, в функции static QSqlError qMakeError(...): Код: QString msg = p->isUtf8 ? QString::fromUtf8(s) : QString::fromLocal8Bit(s); p->isUtf8 инициализируется false и значение устанавливается только после подключения к серверу, вызовом запроса exec("SET CLIENT_ENCODING TO 'UNICODE'"). Т. е., приложение считает, что до успешного подключения все сообщения от сервера приходят в локальной кодировке, на windows это CP1251, отсюда и кракозябры. Помогла установка Код: QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8")); Как вариант ещё можно завести тикет, чтоб по умолчанию p->isUtf8 инициализировался в true, вряд ли кто-то в 21 веке будет создавать постгресовскую базу не в юникоде :-/ |