2011-03-23 4 views
0

J'utilise un fichier XML généré par Windows. il contient le caractère de copyright. Je dois prendre ce fichier et l'analyser dans mon application linux C++. Je dois utiliser la fonction mbstowcs mais cette fonction ne peut pas analyser le caractère copyright (R) qui ressemble: \ 302 \ 256.mbstowcs() échoue pour le caractère spécial

une suggestion?

10x!

+4

Appelez-vous 'setlocale()'? Avec quels arguments? Quelle est la valeur de votre variable d'environnement 'LANG'? – caf

+1

vous devez définir une locale qui correspond à l'encodage du fichier xml – smerlin

Répondre

1

Quel est le codage du fichier? A-t-il été écrit en tant que chaîne multi-octets ou est-ce en UTF-8? UTF-8 n'est pas nécessairement identique à une chaîne multi-octets, donc vous devrez peut-être faire la conversion vous-même, sauf si vous êtes capable de lire UTF-8 (un peu difficile pour les flux C++). J'utilise une solution open source (UTF8-CPP) pour effectuer mes conversions et cela fonctionne très bien sous Linux et Windows. Il vous permet d'utiliser std :: string et std :: wstring pour faire toutes les choses de conversion (chaîne large à utf-8 et vice versa).

+0

'0302 0256' est l'encodage UTF-8 du caractère' (R) '(en octal), donc UTF-8 semble être ce que le OP a . – caf