У меня вопрос по использованию функции 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.
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум c и iconv - помогите разобраться (2008)
- Форум iconv: проблемы с переименованием. (2006)
- Форум cp1251<->utf8 через iconv (2003)
- Форум Не получается iconv cp1251 > utf8 (2013)
- Форум iconv - почему получаю invalid argumests (2004)
- Форум Затык с iconv (на С) (2005)
- Форум Поясните поведение mbstowcs (2010)
- Форум C++/Странная работа iconv (2011)
- Форум С++ Типы (2013)
- Форум FreeImage_Allocate() + FreeImage_Save() (2011)