„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie werden UTF-8-Zeichenfolgen unter Windows korrekt in „std::cout“ ausgegeben?

Wie werden UTF-8-Zeichenfolgen unter Windows korrekt in „std::cout“ ausgegeben?

Veröffentlicht am 12.11.2024
Durchsuche:558

How to Output UTF-8 Strings Correctly to `std::cout` on Windows?

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:

  1. Setzen Sie die Konsolencodepage auf UTF-8 ein : Informieren Sie die Konsole mithilfe der SetConsoleOutputCP-Funktion darüber, dass der eingehende Bytestream UTF-8 ist codiert.
  2. Stream-Pufferung aktivieren: Deaktivieren Sie das Standardverhalten von std::basic_filebuf in Visual Studio, das UTF-8-Bytesequenzen aufschlüsselt und sie als einzelne Bytes übergibt. Um dies zu überwinden, aktiviert setvbuf die Stream-Pufferung und stellt sicher, dass die gesamte Zeichenfolge als Ganzes weitergeleitet wird.

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.

Neuestes Tutorial Mehr>

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