Dela via


Konsolkodning förblir inte UTF-8 efter slutförande

Felet som nämns i CLI-konsolens utdata, där UTF-8-användningen innebar en brytande förä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 brytande ä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 ändrar inte terminalkodningen när programmet avslutas för andra program.
  • Som standard använder SDK inte längre UTF-8 för Windows-versioner som inte stöder det.

Version lanserad

7.0.3xx .NET 8 Förhandsversion 3

Typ av brytande ändring

Den här ändringen kan påverka binär kompatibilitet. Det är också en beteendeförändring.

Orsak till ändring

Det fanns en befintlig bugg där .NET SDK påverkade kodningen i konsolen för andra program. Det var en bugg som åtgärdades, vilket resulterade i denna avgörande ändring.

Ä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. Istället finns nu möjlighet att välja att delta.

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