Konsolencodierung bleibt nach Abschluss nicht UTF-8

Der in Breaking Change CLI-Konsolenausgabe verwendet UTF-8 erwähnte Fehler, bei dem das .NET SDK die Codierung der gesamten Konsole änderte, wurde behoben. Die Konsolencodierung bleibt nicht mehr UTF-8, nachdem das .NET SDK einen Befehl ausgeführt hat. Es ist möglich, dass sich die Benutzer an dieses Verhalten gewöhnt haben, sodass es sich um eine Breaking Change handelt.

Außerdem ändert das .NET SDK die Codierung bei älteren Windows 10-Versionen, die dies nicht vollständig unterstützen, nicht mehr in UTF-8.

Vorheriges Verhalten

  • Das SDK hat die Codierung eines Terminals geändert, nachdem es einen Befehl wie dotnet build ausgeführt hat.
  • Das SDK hat die UTF-8-Codierung verwendet, um nicht-englische Zeichen ordnungsgemäß wiederzugeben, sogar für Versionen von Windows 10, die UTF-8 nicht offiziell unterstützen. Das Verhalten war für diese Versionen nicht definiert.

Neues Verhalten

  • Das SDK ändert die Terminalcodierung nach dem Beenden für andere Programme nicht.
  • Standardmäßig verwendet das SDK UTF-8 nicht mehr für Windows-Versionen, die es nicht unterstützen.

Eingeführt in Version

7.0.3xx .NET 8 Vorschauversion 3

Typ des Breaking Changes

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

Grund für die Änderung

Es gab einen Fehler, bei dem das .NET SDK die Codierung auf der Konsole für andere Programme beeinflusst hat. Das war ein Fehler, der behoben wurde, was zu dieser Breaking Change führte.

Ältere Versionen von Windows 10 (d. h. Versionen vor dem Update vom November 2019) unterstützten UTF-8 nicht, sodass das Standardverhalten nicht darin bestehen sollte, die UTF-8-Codierung zu verwenden. Stattdessen ist jetzt eine Aktivierung verfügbar.

Wenn Ihre App die Codepage unter Windows ändern muss, kann sie einen Prozess ausführen, um den Befehl chcp aufzurufen. Ihre App sollte sich nicht auf das .NET SDK verlassen, um die Codierung zu ändern.

Für ältere Windows 10-Versionen, die UTF-8 nicht offiziell unterstützen und bei denen Sie möchten, dass das .NET SDK die Codierung für nicht-englische Sprachen weiterhin in UTF-8 ändert, können Sie die Umgebungsvariable DOTNET_CLI_FORCE_UTF8_ENCODING auf true oder 1 festlegen.

Weitere Informationen