Ich arbeite an einem Englisch nur C++ - Programm für Windows, wo uns gesagt wurde "immer std :: wstring", aber es scheint, dass niemand im Team wirklich viel Verständnis darüber hat.Verwirrt über C++ 's st :: wstring, UTF-16, UTF-8 und Anzeige von Strings in einer Windows-GUI
Ich habe bereits die Frage mit dem Titel "std::wstring VS std::string gelesen. Es war sehr hilfreich, aber ich verstehe immer noch nicht, wie ich all diese Informationen auf mein Problem anwenden kann.
Das Programm, an dem ich gerade arbeite, zeigt Daten in einer Windows GUI an. Diese Daten werden als XML beibehalten. Wir wandeln dieses XML häufig mit XSLT in HTML oder XSL: FO für Berichtszwecke um.
Mein Gefühl basierend auf dem, was ich gelesen habe, ist, dass der HTML-Code als UTF-8 codiert werden sollte. Ich weiß sehr wenig über GUI-Entwicklung, aber das bisschen, was ich gelesen habe, deutet darauf hin, dass das GUI-Zeug alles auf UTF-16-codierten Strings basiert.
Ich versuche zu verstehen, wo dies mich verlässt. Nehmen wir an, wir entscheiden, dass alle unsere persistenten Daten UTF-8-kodiertes XML sein sollen. Bedeutet dies, dass ich, um persistente Daten in einer UI-Komponente anzuzeigen, wirklich eine Art von explizitem UTF-8-UTF-16-Transcodierungsprozess durchführen sollte?
Ich vermute, dass meine Erklärung Klarstellung verwenden könnte, also werde ich versuchen, das zur Verfügung zu stellen, wenn Sie irgendwelche Fragen haben.
Es ist nicht wirklich genau zu sagen, dass * nix auf UTF-8 basiert die Art, wie Windows auf UTF-16 basiert. Es basiert auf einer länderspezifischen Zeichencodierung (in der Windows-Terminologie ANSI). POSIX erfordert, dass bestimmte Zeichen (einschließlich NUL) in einem einzigen Byte dargestellt werden, so dass UTF-16 und UTF-32 nicht zulässig sind, aber UTF-8 ist. – dan04