crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> SQLITE CP1251, как корректно читать в QT4?
rotor
  опции профиля:
сообщение 23.9.2010, 11:36
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 2
Регистрация: 23.9.2010
Пользователь №: 2060

Спасибо сказали: 0 раз(а)




Репутация:   0  


Имеется БД SQLITE в которой имеются записи кирилицей в кодировке CP1251, при попытке чтения данных из БД возвращается кирилическая строка в виде "??????????? ???? ".
Как с этим бороться?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 23.9.2010, 13:10
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


например: setCodecForCString для кодировки БД
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
rotor
  опции профиля:
сообщение 24.9.2010, 13:32
Сообщение #3


Новичок


Группа: Новичок
Сообщений: 2
Регистрация: 23.9.2010
Пользователь №: 2060

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(Litkevich Yuriy @ 23.9.2010, 9:10) *
например: setCodecForCString для кодировки БД

codecForTr(), setCodecForCStrings, setCodecForLocale() пробовал это не помагает.


QByteArray encodedString = query.value(Name).toByteArray;

QTextCodec *codec = QTextCodec::codecForName("cp1251");
QString string = codec->toUnicode(encodedString);

на MySQL это работает нормально, а вот в SQLITE не дает результата.

query - возвращает далеко не то что было в базе(на уровне байтов).
Да собственно как и запись в БД на SQLITE в коде 1251 у меня так и не получилось, хотя очень сильно нужно.
А вот с MySql проблем нет, что посылаеш то и ложится в базу.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
bynet
  опции профиля:
сообщение 4.10.2010, 15:41
Сообщение #4


Студент
*

Группа: Участник
Сообщений: 69
Регистрация: 17.3.2008
Из: Belarus
Пользователь №: 124

Спасибо сказали: 0 раз(а)




Репутация:   0  


Запись у меня получилось с помощью query.bindValue();
Пример: query.bindValue(":namecompany",QString::fromUtf8("Название организации"));
fromUtf8 - попробуй заменить на тот который тебе нужно.
И читает тоже.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
DenisKh001
  опции профиля:
сообщение 16.6.2011, 16:30
Сообщение #5


Новичок


Группа: Новичок
Сообщений: 7
Регистрация: 16.6.2011
Пользователь №: 2752

Спасибо сказали: 0 раз(а)




Репутация:   0  


SQLite никак не может быть в ср1251. Каким средством для пользуешься для создания/редактирования базы?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 16.6.2011, 16:40
Сообщение #6


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


Опоздали на год =)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 17.6.2011, 8:33
Сообщение #7


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


В старых темах лучше задавать связанный вопрос, а не отвечать. Т.к. ответ явно не имеет актуальности.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 29.9.2022, 18:00