Share via


CLI-Konsolenausgabe verwendet UTF-8

Wenn die DOTNET_CLI_UI_LANGUAGE- oder VSLANG-Umgebungsvariable festgelegt ist, ändert sich die Codierung der .NET CLI-Konsolenausgabe und -eingabe in UTF-8, sodass die Codepage auch zu UTF-8 wechseln kann. Durch dieses neue Verhalten können Zeichen aus Sprachen, die durch diese Umgebungsvariablen festgelegt sind, ordnungsgemäß gerendert werden.

Diese Änderung betrifft nur Windows-Betriebssysteme (die Codierung war auf anderen Plattformen in Ordnung). Außerdem gilt sie nur für Windows 10 und höhere Versionen, bei denen die vom Benutzer festgelegte UI-Kultur einer nicht englischsprachigen Version entspricht.

Vorheriges Verhalten

Zeichen in bestimmten Sprachen, darunter Chinesisch, Deutsch, Japanisch und Russisch, wurden manchmal als unleserliche Zeichen oder als ? in der Konsole angezeigt. Beispiel:

C:\>dotnet build
MSBuild version 17.3.0-preview[...] for .NET
  ???????????????...

Neues Verhalten

Ab .NET 7 (Version 7.0.3xx) und .NET 8 werden die Zeichen ordnungsgemäß gerendert. Sowohl die Codierung als auch die Codepage ändern sich. Beispiel:

C:\>dotnet build
MSBuild version 17.3.0-preview[...] for .NET
  正在确定要还原的项目…

Windows-Versionen, die älter als Windows 10 1909 sind, unterstützen UTF-8 nicht vollständig und es kann nach dieser Änderung zu Problemen kommen. (Ab .NET 8 und .NET 7.0.300 SDK ändert das .NET SDK die Codierung für diese Versionen standardmäßig nicht mehr in UTF-8. Verwenden Sie die Umgebungsvariable, um sich für die Verwendung von UTF-8 auch bei Windows 10-Versionen zu entscheiden, die DOTNET_CLI_FORCE_UTF8_ENCODING dies nicht unterstützen.)

Darüber hinaus gab es einen bestehenden Fehler, bei dem das SDK die Codierung anderer Befehle und Programme beeinflussen kann, die in derselben Eingabeaufforderung aufgerufen werden, nachdem das SDK seine Ausführung beendet hat. Nachdem das SDK jetzt häufiger die Codierung ändert, können die Auswirkungen dieses Fehlers zunehmen. Der Fehler wurde jedoch in .NET 8 und .NFT 7.0.300 SDK behoben. Weitere Informationen finden Sie unter SDK no longer changes console encoding after completion (Das SDK ändert die Konsolencodierung nach Abschluss nicht mehr.).

Eingeführt in Version

7.0.3xx .NET 8 Preview 1

Typ des Breaking Changes

Diese Änderung kann sich auf Quellkompatibilität und binäre Kompatibilität auswirken. Es ist auch ein Behavior Change.

Grund für die Änderung

Die Verwendung der .NET CLI in nicht englischen Sprachen war eine schlechte Erfahrung.

Entwickler, die nicht bereits die Variablen VSLANG und DOTNET_CLI_UI_LANGUAGE verwenden, sind davon nicht betroffen. Die Auswirkungen dürften minimal sein, da diese Spracheinstellung aufgrund der unleserlichen Zeichen von vornherein nicht gut funktioniert hätte. Außerdem könnten nur Entwickler betroffen sein, die Windows 10 oder höher verwenden. Die meisten von ihnen verwenden wahrscheinlich die Version 1909 oder höher.

Es ist bereits weniger wahrscheinlich, dass die Legacyszenarien die fehlerhaften Sprachen unterstützen. Es ist daher unwahrscheinlich, dass Sie eine andere Sprache verwenden möchten, die diesen Fehler ohnehin offenlegt.

  • Wenn Sie eine ältere Version von Windows 10 verwenden, aktualisieren Sie auf Version 1909 oder höher.
  • Wenn Sie eine ältere Konsole verwenden möchten oder aufgrund der geänderten Codierung Probleme beim Erstellen haben, deaktivieren Sie die Einstellungen VSLANG und DOTNET_CLI_UI_LANGUAGE, um diese Änderung zu verhindern.

Weitere Informationen