Konsolkodning förblir inte UTF-8 efter slutförande
Felet som nämns i CLI-konsolens utdata använder UTF-8-icke-bakåtkompatibel ändring, där .NET SDK ändrade kodningen för hela konsolen, har åtgärdats. Konsolkodningen förblir inte längre UTF-8 efter att .NET SDK har kört ett kommando. Det är möjligt att användarna kom att förlita sig på det beteendet, därför är detta en icke-bakåtkompatibel ändring.
Dessutom ändrar .NET SDK inte längre kodningen till UTF-8 på äldre Windows 10-versioner som inte har fullt stöd för den.
Tidigare beteende
- SDK ändrade kodningen för en terminal efter att ha kört ett kommando, till exempel
dotnet build
. - SDK:t använde UTF-8-kodningen för att korrekt återge icke-engelska tecken, även i versioner av Windows 10 som inte officiellt stödde UTF-8. Beteendet var odefinierat för dessa versioner.
Nytt beteende
- SDK:t ändrar inte terminalkodningen efter avslutad för andra program.
- Som standard använder SDK inte längre UTF-8 för Windows-versioner som inte stöder det.
Version introducerad
7.0.3xx .NET 8 Förhandsversion 3
Typ av icke-bakåtkompatibel ändring
Den här ändringen kan påverka binär kompatibilitet. Det är också en beteendeförändring.
Orsak till ändringen
Det fanns en befintlig bugg där .NET SDK påverkade kodningen i konsolen för andra program. Det var en bugg som har åtgärdats, vilket resulterade i den här icke-bakåtkompatibla ändringen.
Äldre versioner av Windows 10 (dvs. versioner före uppdateringen från november 2019) hade inte stöd för UTF-8, så standardbeteendet bör inte vara att använda UTF-8-kodning. I stället är en opt-in nu tillgänglig.
Rekommenderad åtgärd
Om din app behöver ändra kodsidan i Windows kan den köra en process för att anropa chcp
kommandot. Din app bör inte förlita sig på .NET SDK för att ändra kodningen.
För äldre Windows 10-versioner som inte officiellt stöder UTF-8 där du vill att .NET SDK ska fortsätta att ändra kodningen till UTF-8 för icke-engelska språk, kan du ange miljövariabeln DOTNET_CLI_FORCE_UTF8_ENCODING
till true
eller 1.