Freigeben über


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 Benutzer auf dieses Verhalten angewiesen waren, daher ist dies eine bahnbrechende Änderung.

Darüber hinaus ändert das .NET SDK die Codierung nicht mehr in UTF-8 unter älteren Windows 10-Versionen, die es nicht vollständig unterstützen.

Vorheriges Verhalten

  • Das SDK hat die Codierung eines Terminals nach dem Ausführen eines Befehls wie beispielsweise dotnet build geändert.
  • Das SDK hat die UTF-8-Codierung verwendet, um nicht englische Zeichen korrekt zu rendern, auch in Versionen von Windows 10, die UTF-8 nicht offiziell unterstützen. Das Verhalten wurde 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ührte Version

7.0.3xx .NET 8 Preview 3

Art der einschneidenden Änderung

Diese Änderung kann sich auf die binäre Kompatibilität auswirken. Es ist auch eine Verhaltensänderung.

Grund für Ä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 in diese einschneidende Änderung resultierte.

Ältere Versionen von Windows 10 (d. h. Versionen vor dem Update vom November 2019) haben UTF-8 nicht unterstützt. Daher sollte das Standardverhalten nicht die UTF-8-Codierung verwenden. Stattdessen ist jetzt ein Opt-in verfügbar.

Wenn Ihre App die Codeseite unter Windows ändern muss, kann sie einen Prozess ausführen, um den chcp Befehl 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, wo das .NET SDK weiterhin die Codierung in UTF-8 für nicht englische Sprachen ändern soll, können Sie die Umgebungsvariable DOTNET_CLI_FORCE_UTF8_ENCODING auf true oder 1 festlegen.

Siehe auch