Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Запросы с широкими символами (http://forum.oszone.net/showthread.php?t=301112)

evpu 12-06-2015 15:30 2517853

Запросы с широкими символами
 
Всем добрый день!

Снова о своем "любительском проекте". Созданный мной ранее на РНР движок базы сохранял кириллицу в БД в UTF8. Собственно, если бы даже и не так, пришлось бы в ряде процедур все равно конвертировать в UTF8. И вот теперь, делаю алгоритмы ядра на С под Debian, столкнулся с тем, что нужно из таблицы вычитывать данные с "широкими" символами, их обрабатывать, и загонять назад, так же в "широких" символах.
С типом wchar_t разобрался вроде...

Подскажите пожалуйста правильный синтаксис запросов, (я так полагаю, mysql_real_query()?) для извлечения в широкосимвольный массив! Только за эту задачу взялся, "нахрапом" взять не удалось - компилятор выдает кучу мата от mysql.h...

И по поводу функции swprintf(). Там второй аргумент - "count - максимальное число символов, которое сохраняется в версии Unicode этой функции." Порывшись в описании UTF8 нахожу информацию:

wiki:
"Алгоритм UTF-8 технически позволяет записывать код любой длины. Но для эффективной и надёжной работы алгоритма необходимо ограничение длины кода. Действующий стандарт Unicode 6.х предполагает использование кода до 21-го бита, то есть до четырех байт в UTF-8.".

Я так полагаю, это означает, что аргументу count следует присвоить значение "4"?

Iska 12-06-2015 18:31 2517920

Цитата:

Цитата evpu
И по поводу функции swprintf(). Там второй аргумент - "count - максимальное число символов, которое сохраняется в версии Unicode этой функции." Порывшись в описании UTF8 нахожу информацию:
wiki:
"Алгоритм UTF-8 технически позволяет записывать код любой длины. Но для эффективной и надёжной работы алгоритма необходимо ограничение длины кода. Действующий стандарт Unicode 6.х предполагает использование кода до 21-го бита, то есть до четырех байт в UTF-8.".
Я так полагаю, это означает, что аргументу count следует присвоить значение "4"? »

Не там рылись. Второй аргумент — ровно то, что написано.
Цитата:

If the resulting wide string would be longer than len-1 characters, the remaining characters are discarded and not stored.
Цитата:

Maximum number of wide characters to fill in the ws buffer. The generated string has a length of at most n-1, leaving space for the additional terminating null wide character.
Зачем категорию выбрали при создании темы MySQL, когда у Вас C++?!

evpu 13-06-2015 19:39 2518286

Спасибо за ответ!

С swprintf в любом случае разберусь... Спасибо за информацию. Суть в том, что из базы посредством mysql_query нужно извлекать данные, содержащие UTF8, путем форматированного вывода включать эти данные в UPDATE-запрос, и выполнять его, обычная mysql_query этот формат не отправляет... а с mysql_real_query пока не получилось.


Время: 12:15.

Время: 12:15.
© OSzone.net 2001-