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-Strings an std::cout unter Windows stellt jedoch besondere Herausforderungen dar.
Das Standardverhalten unter Windows ist, dass std::cout Strings 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:
<code class="cpp">#include <string> #include <iostream> #include <Windows.h> #include <cstdio> 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 << test << std::endl; return 0; }</code>
Zusätzlich Beachten Sie bei diesen Schritten, dass Rasterschriftarten in der Windows-Konsole möglicherweise Nicht-ASCII-Unicode-Zeichen 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.
Das obige ist der detaillierte Inhalt vonWie werden UTF-8-Zeichenfolgen unter Windows korrekt in „std::cout' ausgegeben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!