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

NSKeyValueCoding

Membre confirmé
30 Août 2011
10
0
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’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’utilise ça : ( fonctionne tres bien sous Windows)
Bloc de code:
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
 
Dernière édition:
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 ...