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)
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
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: