LINUX.ORG.RU

Сообщения Zero010

 

Помогите разобраться с libiconv

Скачал с http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz libiconv-1.14. Собрал с помощью mingw эту библиотеку под windows. Шедшая с ней в качестве примера iconv_no_i18n , нормально работает и все конвертит. Пишу свой код:

#include "testiconv.h"

void readdata(char** buf, size_t len){
FILE *pFile = fopen ("in.txt","r");
if (pFile!=NULL)
  {
    printf("readf file in.txt \n\n") ;
    fread(*buf, 1, len, pFile);
    fclose(pFile);
  }
}


void writedata(char* buf, size_t len){
FILE *pFile = fopen ("out.txt","w");
if (pFile!=NULL)
  {
    printf("write file out.txt \n\n") ;
    fwrite(buf, 1, len, pFile);
    fclose(pFile);
  }

}

int main(int argc, char* argv[])
{
    char input[BUFSIZ]; 
    char output[BUFSIZ]; 
    FILE * pFile;
    size_t insize = BUFSIZ; 
    size_t outsize = BUFSIZ; 
    char *outp = (char *)output;
    char *inp = (char *)input; 
    iconv_t cd = iconv_open((const char* )"CP1251",(const char *) "UTF-8"); 
    readdata(&inp,256) ;
    insize = 256; 
    printf("1: in-str=%s \n len=%d \n ===================== \n", input,insize); 
    iconv(cd, NULL, NULL, NULL, NULL); 
    iconv(cd, &inp, &insize, &outp, &outsize);
    iconv_close(cd); 	
    printf("2: out-str=%s \n len=%d \n ===================== \n", output,outsize);  
    writedata(output,outsize) ;
    return 0;
}
Программа по задумке должна брать 256 символов из файла in.txt в кодировке CP1251 и перекодировать в UTF-8, а затем сохранять в out.txt . Когда в файле in.txt текст латиницей это работает, как только текст с кириллицей то файл out.txt заполняется одними \x00 . Скомпилировал этот же код под linux( под федору-16 (3.3.1-5.fc16.x86_64) ) . Тот же самый результат. Что я не так делаю?

 libiconv,

Zero010
()

RSS подписка на новые темы