Umgang mit UTF-8-Strings in C unter Windows
Die Codierung von Strings als UTF-8 wird häufig für plattformübergreifende Anwendungen verwendet. Die Ausgabe von UTF-8-Zeichenfolgen an std::cout unter Windows stellt jedoch besondere Herausforderungen dar.
Das Standardverhalten unter Windows ist, dass std::cout Zeichenfolgen in Nicht-Unicode-Formaten erwartet. Wenn UTF-8-Zeichenfolgen angezeigt werden, werden beschädigte Zeichen angezeigt.
Um dieses Problem zu beheben, gibt es zwei Hauptschritte:
Hier ist ein überarbeiteter Codeausschnitt, der diese Lösungen enthält:
#include
#include
#include
#include
int main() {
// Set console code page to UTF-8
SetConsoleOutputCP(CP_UTF8);
// Enable buffering to prevent byte-by-byte transmission
setvbuf(stdout, nullptr, _IOFBF, 1000);
// Output UTF-8 string
std::string test = u8"Greek: αβγδ; German: Übergrößenträger";
std::cout Beachten Sie zusätzlich zu diesen Schritten, dass Rasterschriftarten in der Windows-Konsole Nicht-ASCII-Unicode-Zeichen möglicherweise nicht korrekt anzeigen. Um eine ordnungsgemäße Darstellung zu ermöglichen, wird empfohlen, zu einer TrueType-Schriftart zu wechseln, die jetzt in Windows 10 und späteren Versionen die Standardschrift ist.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3