Heim > Backend-Entwicklung > C++ > Wie werden UTF-8-Zeichenfolgen unter Windows korrekt in „std::cout' ausgegeben?

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

Susan Sarandon
Freigeben: 2024-10-31 07:36:01
Original
409 Leute haben es durchsucht

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-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:

  1. Setzen Sie die Konsolencodepage auf UTF-8 : Informieren Sie die Konsole mithilfe der SetConsoleOutputCP-Funktion darüber, dass der eingehende Byte-Stream UTF-8-codiert ist.
  2. Stream-Pufferung aktivieren: Deaktivieren Sie das Standardverhalten von std::basic_filebuf in Visual Studio, das UTF-8-Bytesequenzen zerlegt und 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:

<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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage