Ich habe Probleme mit der Konvertierung von UTF-8 in Unicode.UTF-8 zu Unicode-Konvertierung
Unten ist der Code:
int charset_convert(char * string, char * to_string,char* charset_from, char* charset_to)
{
char *from_buf, *to_buf, *pointer;
size_t inbytesleft, outbytesleft, ret;
size_t TotalLen;
iconv_t cd;
if (!charset_from || !charset_to || !string) /* sanity check */
return -1;
if (strlen(string) < 1)
return 0; /* we are done, nothing to convert */
cd = iconv_open(charset_to, charset_from);
/* Did I succeed in getting a conversion descriptor ? */
if (cd == (iconv_t)(-1)) {
/* I guess not */
printf("Failed to convert string from %s to %s ",
charset_from, charset_to);
return -1;
}
from_buf = string;
inbytesleft = strlen(string);
/* allocate max sized buffer,
assuming target encoding may be 4 byte unicode */
outbytesleft = inbytesleft *4 ;
pointer = to_buf = (char *)malloc(outbytesleft);
memset(to_buf,0,outbytesleft);
memset(pointer,0,outbytesleft);
ret = iconv(cd, &from_buf, &inbytesleft, &pointer, &outbytesleft);ing
memcpy(to_string,to_buf,(pointer-to_buf);
}
main():
int main()
{
char UTF []= {'A', 'B'};
char Unicode[1024]= {0};
char* ptr;
int x=0;
iconv_t cd;
charset_convert(UTF,Unicode,"UTF-8","UNICODE");
ptr = Unicode;
while(*ptr != '\0')
{
printf("Unicode %x \n",*ptr);
ptr++;
}
return 0;
}
Es A geben sollte und B, aber ich bin immer:
ffffffff
fffffffe
41
Danke, Sandeep
Können Sie Ihre Frage ein wenig beheben? Es ist ziemlich unlesbar wie es ist. Außerdem macht "UTF-8 nach Unicode-Konvertierung" keinen Sinn. Unicode ist eine Spezifikation und UTF-8 ist ein "Format" zum Speichern von Daten zur Verwendung in Unicode-bezogenen Feldern. – soc
Hast du versucht zu verstehen, was es tut oder hast du es einfach irgendwo kopiert (von den Zeilennummern überall zu urteilen)? – soc
Dank Soc, Ich ging durch den unten genannten Link und versuchte zu verstehen, ob Unicode Binary-Darstellung und entsprechende UTF-8 sind unterschiedlich. – sandeep