Frage

Wenn eine Datei enthält einen £ (Pfund) unterzeichnet dann directory_iterator korrekt liefert die UTF-8-Zeichensequenz \ xC2 \ XA3

wdirectory_iterator verwendet breites Zeichen, aber immer noch gibt die UTF-8-Sequenz. Ist dies das richtige Verhalten für wdirectory_iterator, oder bin ich es falsch verwenden?

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
War es hilfreich?

Lösung

Die Codierung für breite Zeichen (wchar_t Objekte) ist die Umsetzung abhängig. Für die zweite Anweisung (das heißt L „Pfund £ Zeichen“) zu arbeiten, müssen Sie wahrscheinlich die zugrunde liegenden locale ändern. Die Standardeinstellung ist „C“, die nicht über das Pfund Charakter nicht kennt. Der Hex-Wert, da dies gelingt es erfordert nicht die Abbildung die Glyphe auf einen Wert in einer bestimmten Codierung.

. Hinweis: ich den genauen Wortlaut der Norm w.r.t Wchar_t bin Skipping, erweiterte Zeichensätze usw. der Kürze halber

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top