Dela via


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.

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.

Se även