LINUX.ORG.RU

Добавлю: коды символов кириллицы

anonymous
()
Ответ на: комментарий от Valeriy_Onuchin

Мне нужно перевести некую последовательность символов (например "пример"). Судя по этим таблицам при переводе в юникод должна получится следующая вещь: п р и м е р 043F 0440 0438 043C 0435 0440

Но как это реализовать на Си? В каком направлении двигаться?

anonymous
()

sprintf и printf в помощь

anonymous
()
Ответ на: комментарий от anonymous

для юникода (utf-8 ?) можно заюзать glib

Reset ★★★★★
()
Ответ на: комментарий от watashiwa_daredeska

Последовательность берётся из базы. В базе хранится строка в кодировке(cp1251 или юникод).

anonymous
()
Ответ на: комментарий от anonymous

> Последовательность берётся из базы.

И в чем проблема? Шестнадцатеричный код символа в текстовом представлении можно получить sprintf'ом, как уже говорили:

char a = 'A'; char hex[3]; sprintf( hex, "%02x", (int)a );

> В базе хранится строка в кодировке(cp1251 или юникод).

Юникод -- это отображение символов в числа безотносительно к представлению чисел. Существует несколько таких представлений (например, UTF-8, UCS4LE, UCS4BE и т.п.). Какое представление в данном случае? UTF-8?

watashiwa_daredeska ★★★★
()
Ответ на: комментарий от watashiwa_daredeska

>char a = 'A'; char hex[3]; sprintf( hex, "%02x", (int)a );

Спасибо. Вот это помогло. А я то думал, что это прокатит только с ASCII.

>Какое представление в данном случае? UTF-8?

Некая виндовая программа пишет строку в базу (как я понял в винде умолчальное представление - UTF-16LE). Другая программа на Линуксе читает эту строку из базы (в линуксе представление UTF-8). Но как я понял что в винде, что в линуксе hex кодом, например символа 'я' будет одно и тоже число 0x044F?

anonymous
()
Ответ на: комментарий от anonymous

> как я понял что в винде, что в линуксе hex кодом, например символа 'я' будет одно и тоже число 0x044F?

Нет. В UTF-16 представление символа 'я' -- 16-битное число 0x044F, в UTF-8 -- 2-байтовая последовательность 0xD1 0x8F.

watashiwa_daredeska ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.