Как можно сделать перекодировку символов вывода printf юникод в cp866?

Как можно стандартными средствами библиотек cb сделать перекодировку символов вывода printf в cp866 ?


Ответы (1 шт):

Автор решения: Sergey

Мне нужно выводить в консоль данные в формате cp 866.

Не понятно. У Вас есть (к примеру) текстовый файл в кодировке cp866 и вам надо выдать его на консоль в кодировке utf8 ? Или наоборот - вохд в utf-8 а на консоль Вы хотите писать в cp866 ?

Вы не указали ОС, под которой будет работать Ваша программа. Но, не думаю, что на AVR работает Windows. Поэтому:

ICONV(3)                          Руководство программиста Linux                          ICONV(3)

ИМЯ
       iconv - изменяет кодировку символов

ОБЗОР
       #include <iconv.h>

       size_t iconv(iconv_t cd,
                    char **inbuf, size_t *inbytesleft,
                    char **outbuf, size_t *outbytesleft);

ОПИСАНИЕ
       Функция   iconv()   преобразует   последовательность   символов   с   одной  кодировкой   в
       последовательность символов с другой  кодировкой.  Аргумент  cd  должен  быть  дескриптором
       преобразования,  созданным ранее с помощью функции iconv_open(3); дескриптор преобразования
       определяет кодировки символов, которые  iconv()  использует  для  преобразования.  Аргумент
       inbuf   содержит   адрес   переменной,   которая   указывает   на   первый  символ  входной
       последовательности; в inbytesleft содержится количество байт в  этом  буфере.  В  аргументе
       outbuf  содержится  адрес  переменной, которая указывает на первый байт выходного буфера; в
       outbytesleft содержится количество байт в выходном буфере.
→ Ссылка