Beim Arbeiten mit UTF-8-codierten Zeichenfolgen in einer plattformübergreifenden C-Anwendung können Probleme auftreten beim Versuch, sie auf std::cout auf Windows-Systemen zu drucken. Standardmäßig erwartet std::cout, dass 8-Bit-Zeichenfolgen in Latin-1 oder einem ähnlichen Nicht-Unicode-Format vorliegen, was zu einer verstümmelten Ausgabe für UTF-8-Zeichenfolgen führt.
Um dieses Problem unter Windows zu beheben, gibt es mehrere Vorgehensweisen können gewählt werden:
Konsolencodepage auf UTF-8 setzen:
SetConsoleOutputCP(CP_UTF8);
Diese Funktion teilt dem mit Windows-Konsole, um den empfangenen Bytestream als UTF-8 zu interpretieren.
Problem mit der Stream-Pufferung in Visual Studio STL lösen:
setvbuf(stdout , nullptr, _IOFBF, 1000);
Diese Problemumgehung ermöglicht die Pufferung des Streams und verhindert, dass der STL-Code UTF-8-Bytesequenzen als einzelne Bytes an die Konsole sendet.
Sicherstellen, dass TrueType-Schriftarten verwendet werden:
TrueType-Schriftarten unterstützen Unicode-Zeichen, während Rasterschriftarten Konsolencodepages ignorieren. Windows 10 verwendet Consolas als Standardschriftart, aber in Windows 7 müssen Benutzer möglicherweise manuell zu einer TrueType-Schriftart wechseln, um Nicht-ASCII-Unicode-Zeichen korrekt anzuzeigen.
Das obige ist der detaillierte Inhalt vonWie erreicht man mit std::cout unter Windows eine korrekte UTF-8-Ausgabe?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!