LINUX.ORG.RU

Отконвертировать UTF8 в CP1251 средставами Си/Iconv


0

0

Может есть у когонибудь функция или пример кода, перевода строки из UTF8 во чтонибудь другое средствами Си и/или библиотечного вызова iconv в си? (вроде через него можно), у самого совсем не получается что-то разобраться :(

★★

1027> cat iconv.c
#include <iconv.h>
#include <stdio.h>
#include <errno.h>

int
main() {
        iconv_t d = iconv_open("UTF8", "KOI8-R");
        if (d != (iconv_t)(-1)) {
                char* inBuffer = "АБВГД";
                size_t inSize = sizeof inBuffer;
                char outBuffer[80];
                size_t outSize = sizeof outBuffer;
                char* in = inBuffer;
                char* out = outBuffer;
                iconv(d, &in, &inSize, &out, &outSize);
                iconv_close(d);
                printf("%s\n", outBuffer);
        } else {
                printf("Error: %s\n", strerror(errno));
        }
}
1028> cc iconv.c
1029> ./a.out
п░п▒п▓п⌠п■
1030> ./a.out | iconv -f utf-8 -t koi8-r
АБВГД
1031>

Местная моя локаль koi8-r =)

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

На всякий случай, если кто-то, как и я будет мучиться - iconv требует BOM для кодировок UTF16(32) в обязательном порядке и без него работать не будет.

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