LINUX.ORG.RU

Вопрос о кодировке. ncurses&C++


0

1

Использую ncurses, для вывода русских символов подключаю -lncursesw и setlocale(LC_ALL, ""); Русские строчки выводятся через printw очень хорошо.

Однако, нужно работать с кодами русских букв, а каждая русская буковка теперь занимает по 2 байта, а латинская 1 байт. Объясните, что за кодировка используется и почему разный размер символов, можно ли как-нибудь перейти в кодировке cp866, получив 1 байт на русские и латинские буквы?

Заранее спасибо.

Однако, нужно работать с кодами русских букв

Этого НЕ НУЖНО делать. Нужно работать не с кодами, а с символами utf.

ghoust_x ()

в системе кодировка utf8, внутри ncursesw - UTF32 в представлении wchar_t и размер «символов» в нём одинаковый :)

а в вашем случае что printw вывел строчку с русскими символами - это побочный эффект того что консоль в utf8, а отнють не достижение ncursesw и уж тем более не ваше :) Для вывода (и работы с) unicode предназначенны всевозможные add_wch и иже с ней аналоги для wchar_t

MKuznetsov ★★★★★ ()

что за кодировка используется и почему разный размер символов

man utf8

можно ли как-нибудь перейти в кодировке cp866, получив 1 байт на русские и латинские буквы?

Поверьте, с такими вопросами, вам это не нужно.

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

Ты намекаешь на мою любимую КОИ8-Р? Да, с ней удобно работать (несмотря на то, что порядок букв неалфавитный).

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