Forum Programmation.c Iconv

Posté par  (site web personnel) .
Étiquettes : aucune
0
7
juil.
2004
Je fais actuellement un programme qui convertit une source de donnée d'iso-8859-15 vers utf8 et vice versa
du moins j'essaye
et la fonction principale a savoir iconv
ne marche pas
j'obtiens comme erreur (dans errno):
iconv: Bad file descriptor
et évidement
pas la moindre idée de ce que ca vient faire la dedans
si quelqu'un a une idée......
(bon j'avoue c'est pour un bot irc pour que #linuxfr soit accessible en utf8)
  • # iconv_

    Posté par  (site web personnel) . Évalué à 3.

    #include <langinfo.h>
    #include <iconv.h>

    char* iconv_(char* s, char* from_charset, char* to_charset) {
            iconv_t cd = iconv_open(to_charset, from_charset);
            char* retval = s;
            if (cd != (iconv_t) (-1)) {
                    size_t s_len = strlen(retval);
                    /* the maximum expansion when converting happens when converting
                       tscii to utf-8; each tscii char can become up to 4 unicode chars
                       and each one of those unicode chars can be 3 bytes long */
                    char *buf = alloca(4 * 3 * s_len);
                    {
                            char *ptr = buf;
                            size_t ptr_len = 4 * 3 * s_len;
                            if ((iconv(cd, &s, &s_len, &ptr, &ptr_len)) != (size_t) (-1)) {
                                    *ptr = 0;
                                    retval = buf;
                            }
                    }
                    iconv_close(cd);
            }
            return strdup(retval);
    }
  • # Vala c'est pret

    Posté par  (site web personnel) . Évalué à 0.

    Vala mon bot est pret sur #linuxfr et fonctionnel :)
    donc ceux qui veulent utiliesr l'utf8 c'est #linuxfr_utf8
    comme ca y aura plus de ralleurs :)
    donc merci gc :)

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.