LINUX.ORG.RU

iconv() function


0

0

У меня вопрос по использованию функции iconv. Проблема в следующем. Есть простенькая программка следующего вида:
#include <iconv.h>

int main()
{
char a[] = "Тестовая строка";
char b[sizeof(a)];
char *p1 = a, *p2 = b;
int s1, s2, bytes;
iconv_t id;

s1 = s2 = sizeof(a);
id = iconv_open("KOI8-R","CP1251");
bytes = iconv(id, &p1, &s1, &p2, &s2);
iconv_close(id);
return 0;
}
Так вот этот пример работает некорректно: s1 и s2 уменьшаются до нуля, но функция iconv возвращает 0. При этом в массив b[] пишется какая-то чепуха, прочитать которую невозможно ни в одной кодировке. Т.е. перекодировка происходит, но неизвестно во что. Не могли бы вы подсказать как правильно пользоваться функцией iconv().

P.S.: программа iconv работает нормально, перекодировка работает как из koi8 в cp1251, так и из cp1251 в koi8.

man iconv_open

а вообще-то - переставь местами кодировки :)

ananas ★★★★★
()

Oops, действительно сразу всё заработало. :-) Извиняюсь за свою невнимательность, просто iconv_open() я не придал особого значения.

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