# Problème d'encodage en UTF8 dans une DYLIB C/C++



## NSKeyValueCoding (22 Septembre 2011)

Bonjour

Avant toute chose, j'ai réalisé la même chose sous Windows sans aucun problème dLL sous Code::Blocks avec GCC 

J'ai créé une DYLIB sous Xcode avec GCC qui récupère depuis une API C du XML au format iso8859-1, parse l'XML (TinyXML) en objet dans lesquels j&#8217;effectue des traitements  et retourne les données au format JSON en UTF8.  

J'utilise cette DYLIB dans une extension Firefox, d'où le JSON.

Je me retrouve avec des caractères spéciaux à la place des caractères accentué et des @ dans les dates.

Pour l'encodage ISO vers UTF8 j&#8217;utilise ça : ( fonctionne tres bien sous Windows)

```
void Lecteur::encodeUTF8(string str, char* out)
{
        size_t size = str.size() + 1;
        char* in = new char[ size ];
        strncpy( in, str.c_str(), size );
        strncpy( out, str.c_str(), size );
        int iUtfLen=0;
        int i;
        for(i = 0 ; i<(int)size ; i++)
        {
            if(in[i] < 0)
            {
                out[iUtfLen] = 0xc0 | ((in[i] >> 6) & 0x03);
                iUtfLen++;
                out[iUtfLen] = 0x80 | (in[i] & 0x3f);
                iUtfLen++;
            }
            else
            {
                out[iUtfLen] = in[i];
                iUtfLen++;
            }
        }
        out[iUtfLen] = '\0';
}
```

Pour tester j'ai sorti dans un fichier le XML original  à l'aide de ofstream et le fichier généré est en Mac Roman 

Celà voudrait dire que ma string est en Mac Roman ? 

Comment peut on convertir du Mac Roman en UTF8 ?

Merci de votre aide


----------



## Didier Guillion (22 Septembre 2011)

Verifie que "char type is unsigned" n'est pas coché dans tes préfs du projet Xcode.

Cordialement


----------



## NSKeyValueCoding (28 Septembre 2011)

Bonjour

Merci de ta réponse 

En fait la case de 'char type is unsigned' est vide, ni de no ni de yes 

Le problème s'est résolu de lui même en utilisant un autre mode d'installation de l'API ... mais je risque de le voir apparaitre quand même un jour ...


----------

