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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Кодировка Postgre  (Прочитано 5308 раз)
cya-st
Гость
« : Сентябрь 28, 2009, 11:37 »

Здравствуйте.
Я создал базу PostgreSQL в кодировке WIN1251, из программы я выполняю запрос:
Код
C++ (Qt)
query.exec("INSERT INTO Db1 (id, Name1) VALUES (1,'ТОВАР');");
 
возвращается ошибка: character 0xc322 of encoding "UTF8" has no equivalent in "WIN1251".
Подскажите пожалуйста как с этим можно справится.
Записан
BaltikS
Гость
« Ответ #1 : Сентябрь 28, 2009, 12:01 »

query.exec("INSERT INTO Db1 (id, Name1) VALUES (1,'"+tr("Товар")+"');
При условии что кодировка в программы в 1251 и QTextCodec::codecForTr(QTextCodec::codecForName("CP1251"));
« Последнее редактирование: Сентябрь 28, 2009, 12:02 от BaltikS » Записан
cya-st
Гость
« Ответ #2 : Сентябрь 28, 2009, 12:12 »

Кодировка программы в UTF8, не хотелось бы всю прогу перекодировать.
Записан
BaltikS
Гость
« Ответ #3 : Сентябрь 28, 2009, 14:16 »

А в чём проблема? Переведи слово ТОВАР в UTF8.
Записан
cya-st
Гость
« Ответ #4 : Сентябрь 28, 2009, 15:25 »

Я перевел весь файл в Notepad++, но ошибка таже.
Записан
BaltikS
Гость
« Ответ #5 : Сентябрь 28, 2009, 16:03 »

Тут очевидно проблема с кодировкой, но это никак не связано с БД. Символ передаваемый Вами в БД не в нужной кодировке. Почитайте по QTextCodec...
Записан
cya-st
Гость
« Ответ #6 : Сентябрь 28, 2009, 20:46 »

Разобрался с этой проблемой:
Код
C++ (Qt)
QTextCodec *codec = QTextCodec::codecForName("Windows-1251");
QString str1 = codec->toUnicode("ТОВАР");
 
Все заработало.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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