Heim > Backend-Entwicklung > C++ > Hauptteil

So zeigen Sie UTF-8-Zeichenfolgen korrekt auf der Windows-Konsole an: Eine umfassende Anleitung?

Susan Sarandon
Freigeben: 2024-10-29 18:41:03
Original
293 Leute haben es durchsucht

How to Display UTF-8 Strings Correctly on Windows Console: A Comprehensive Guide?

UTF-8-Ausgabe in Windows: Ein umfassender Leitfaden

Windows stellt eine einzigartige Herausforderung dar, wenn es darum geht, plattformübergreifende Anwendungen in C zu schreiben, die darauf basieren UTF-8-codierte Zeichenfolgen. Im Gegensatz zu Unix-Systemen, die 8-Bit-Strings automatisch als UTF-8 interpretieren, erfordert Windows eine spezielle Konfiguration, um dasselbe zu tun.

Beachten Sie den folgenden Code:

<code class="cpp">#include <string>
#include <iostream>

int main() {
    std::string test = u8"Greek: αβγδ; German: Übergrößenträger";
    std::cout << test;
    return 0;
}</code>
Nach dem Login kopieren

Auf Unix-Systemen Dieser Code gibt die gewünschten Zeichen korrekt wieder. Unter Windows wird jedoch verstümmelter Text angezeigt, da std::cout standardmäßig 8-Bit-Zeichenfolgen in Latin-1 oder einem ähnlichen Nicht-Unicode-Format erwartet.

Um dieses Problem zu beheben, sind für Windows zwei Konfigurationsschritte erforderlich :

1. Konsolen-Codepage auf UTF-8 setzen

Dadurch wird die Konsole angewiesen, den empfangenen Bytestream als UTF-8 zu interpretieren:

<code class="cpp">SetConsoleOutputCP(CP_UTF8);</code>
Nach dem Login kopieren

2. Aktivieren der Pufferung in std::cout

Die Visual Studio STL-Implementierung von std::basic_filebuf kann UTF-8-Sequenzen als einzelne Bytes übergeben, was zu einer falschen Konsoleninterpretation führt. Durch die Aktivierung der Pufferung stellen wir sicher, dass Zeichenfolgen vollständig übergeben werden:

<code class="cpp">setvbuf(stdout, nullptr, _IOFBF, 1000);</code>
Nach dem Login kopieren

Mit diesen Konfigurationen werden UTF-8-Zeichenfolgen korrekt auf der Windows-Konsole angezeigt. Es ist jedoch wichtig zu beachten, dass Windows-Konsolen immer noch ältere Probleme haben:

  • Raster-Schriftarten: Diese Schriftarten ignorieren die Codepage der Konsole und erfordern die Verwendung von TrueType-Schriftarten für Nicht-ASCII Unicode-Zeichen.
  • Windows 7-Standardschriftart:Bis Windows 10 war die Standardschriftart eine Rasterschriftart, die eine manuelle Konfiguration in eine TrueType-Schriftart erforderte.

Von Diese überarbeitete Antwort bezieht sowohl Code als auch Kontext ein und bietet eine umfassende Schritt-für-Schritt-Lösung zum Drucken von UTF-8-Zeichenfolgen unter Windows, die sowohl historische als auch moderne Überlegungen berücksichtigt.

Das obige ist der detaillierte Inhalt vonSo zeigen Sie UTF-8-Zeichenfolgen korrekt auf der Windows-Konsole an: Eine umfassende Anleitung?. 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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!