Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Проблема с составлением SQL запроса в UTF-8.  (Прочитано 9706 раз)
0 Пользователей и 2 Гостей смотрят эту тему.
RuNTiME
Помогающий

ru
Offline Offline
Пол: Мужской

« : 23-02-2009 22:02 » 

Всем доброго времени суток. У меня возникла проблема с динамическим составлением SQL запроса в кодировке UTF-8. Пока использовалась ASCII все было просто. Я использовал функцию,
Код:
int vasprintf(char**, const char*, char*)
которая сама выделяет буфер требуемого размера. Но на работу с юникодом эта функция не расчитана. Подобной функции для юникода я не нашел. Использование функций swprintf, которые не выделяют буфер недопустимо, т.к. я не знаю заранее какой длинны будет SQL запрос.
Записан

Любимая игрушка - debugger ...
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 24-02-2009 04:13 » 

RuNTiME, функции как раз теже - нужно локаль корректную установить. Поможет забыть об этом переменная окружения LC_LANG, либо LC_ALL. В крайнем случае - самостоятельно, в программе, функцией setlocale().

Кстати, в какой системе то работаем?
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
RuNTiME
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #2 : 24-02-2009 17:27 » 

RXL,
Цитата
Кстати, в какой системе то работаем?
Систему пишу свою. С использованием библиотеки Qt. По идее проблема решается простым использованием класса QString. Но я хотел заключить свой код в отдельную библиотеку и не привязывать его к Qt, на случай если придется построить пользовательский интерфейс другими методами... Но сейчас все же решил полностью использовать Qt. Спасибо за ответ, с функцией
Код:
setlocale
поэкспериментирую и возьму на заметку. Улыбаюсь
Записан

Любимая игрушка - debugger ...
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 24-02-2009 18:02 » 

RuNTiME, я неверно выразился: под какой ОС?
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
RuNTiME
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #4 : 24-02-2009 18:16 » 

RXL,  Ubuntu 8.10
Записан

Любимая игрушка - debugger ...
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #5 : 24-02-2009 18:55 » 

Прокатит. Но, думаю, лучше установить локаль до инициализации библиотек Qt.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
RuNTiME
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #6 : 24-02-2009 18:59 » 

RXL,  дак так и сделано. Только в Qt есть свои функции для установки локали:
Код:
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("utf8"));
QTextCodec::setCodecForTr(QTextCodec::codecForName("utf8"));
Записан

Любимая игрушка - debugger ...
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #7 : 24-02-2009 19:03 » 

RuNTiME, в локали не только кодировка - там же и форматы даты/времени, чисел, локализованная сортировка и т.п. штуки.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
RuNTiME
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #8 : 24-02-2009 19:11 » 

RXL,  это все понятно... но впринципе я думаю сделать в программе единый способ ввода чисел, дат независимый от конкретной локали... да и не думаю что локализация может отразиться на сортировке результата SqLite. Но для надежности можно и установить, лишним не будет... Улыбаюсь
Записан

Любимая игрушка - debugger ...
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #9 : 24-02-2009 20:07 » new

Лучше перестраховаться, чем искать потом плавающие глюки Улыбаюсь
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines