LINUX.ORG.RU

Re: Получить код символа

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

anonymous ()
Ответ на: Re: Получить код символа от Valeriy_Onuchin

Re: Получить код символа

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

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

anonymous ()

Re: Получить код символа

sprintf и printf в помощь

anonymous ()
Ответ на: Re: Получить код символа от anonymous

Re: Получить код символа

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

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

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

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

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

watashiwa_daredeska ★★★★ ()
Ответ на: Re: Получить код символа от watashiwa_daredeska

Re: Получить код символа

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

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

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

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

anonymous ()
Ответ на: Re: Получить код символа от anonymous

Re: Получить код символа

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

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

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