iconv-encoding-Konvertierung problem

Ich habe Probleme beim konvertieren von utf8-strings zu gb2312. Mein convert-Funktion ist unten

void convert(const char *from_charset,const char *to_charset, char *inptr, char *outptr)
{
    size_t inleft = strlen(inptr);
    size_t outleft = inleft;
    iconv_t cd;     /* conversion descriptor */

    if ((cd = iconv_open(to_charset, from_charset)) == (iconv_t)(-1)) 
    {
            fprintf(stderr, "Cannot open converter from %s to %s\n", from_charset, to_charset);
            exit(8);
    }

    /* return code of iconv() */
    int rc = iconv(cd, &inptr, &inleft, &outptr, &outleft);
    if (rc == -1) 
    {
            fprintf(stderr, "Error in converting characters\n");

            if(errno == E2BIG)
                    printf("errno == E2BIG\n");
            if(errno == EILSEQ)
                    printf("errno == EILSEQ\n");
            if(errno == EINVAL)
                    printf("errno == EINVAL\n");

            iconv_close(cd);
            exit(8);
    }
    iconv_close(cd);
}

Dies ist ein Beispiel, wie man es verwendet:

int len = 1000;
char *result = new char[len];
convert("UTF-8", "GB2312", some_string, result);

edit: ich habe die meisten der Zeit, erhalten Sie einen Fehler E2BIG.

  • Es würde helfen, wenn du uns eine Vorstellung von dem problem. Tut es nicht kompilieren? Link? Bei der Laufzeit? Was sind die Fehler - /Ausgabe, die Sie sehen?
  • Sollten Sie inptr char const*, um Verwirrung zu vermeiden und mögliche Fehler, da es nicht geändert werden.
InformationsquelleAutor user187920 | 2010-01-29
Schreibe einen Kommentar