Quel format utf doit permettre à wdirectory_iterator de revenir?
Question
Si un fichier contient un & # 163; (dièse) signe alors directory_iterator renvoie correctement la séquence de caractères utf8 \ xC2 \ xA3
wdirectory_iterator utilise des caractères larges, mais renvoie toujours la séquence utf8. Est-ce le comportement correct pour wdirectory_iterator, ou est-ce que je ne l'utilise pas correctement?
AddFile(testpath, "pound£sign");
wdirectory_iterator iter(testpath);
TS_ASSERT_EQUALS(iter->leaf(),L"pound\xC2\xA3sign"); // Succeeds
TS_ASSERT_EQUALS(*iter, L"pound£sign"); // Fails
La solution
Le codage des caractères larges (objets wchar_t
) dépend de la mise en œuvre. Pour que la deuxième déclaration (par exemple, L "pound & # 163; sign") fonctionne, vous devrez probablement modifier les paramètres régionaux sous-jacents. La valeur par défaut est " C " qui ne sait pas sur le personnage de la fourrière. La valeur hexadécimale réussit car cela ne nécessite pas de mapper le glyphe à une valeur dans un codage particulier.
Remarque: par souci de brièveté, je saute la formulation exacte du jeu standard w.r.t wchar_t, des jeux de caractères étendus, etc.
.