LINUX.ORG.RU

cp1251<->utf8 через iconv


0

0

// reco.c
#include <iconv.h>
#include <errno.h>
#include <stdio.h>

int main()
{
iconv_t xz;
xz=iconv_open("CP1251","UTF8");

size_t outbufleft,inbufleft;
inbufleft=1;
outbufleft=2;
char *x=new char[2];
x[2]='А';x[3]='\x0';
char *outbuf=new char[3];

int t=iconv(xz,&x,&inbufleft,&outbuf,&outbufleft);

printf ("Number translated bytes=%d\n",t);
printf("outbuf[0]=%x\n",outbuf[0]);
printf("outbuf[1]=%x\n",outbuf[1]);
printf ("errno=%d\n",errno);
printf ("x[0]=%x\n",(unsigned int)x[0]);
printf ("x[1]=%x\n",(unsigned int)x[1]);
printf ("inbufleft=%d\n",inbufleft);
printf ("outbufleft=%d\n",outbufleft);

iconv_close(xz);
return 0;
}

g++ reco.c -o reco

результат следующий:
# ./reco
Number translated bytes=0
outbuf[0]=0
outbuf[1]=0
errno=0
x[0]=0
x[1]=ffffffc0
inbufleft=0
outbufleft=1

Подскажите плс кто делал перекодировку, где я что неправильно написал или забыл.


char *x=new char[2];

x[2]='А';x[3]='\x0';

x[0]='А';x[1]='\x0'; ?

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