Consolecodering blijft niet UTF-8 na voltooiing
De fout die in de CLI-console-uitvoer wordt vermeld, maakt gebruik van wijziging die fouten veroorzaken in UTF-8 , waarbij de .NET SDK de codering van de hele console heeft gewijzigd, is opgelost. De consolecodering blijft niet langer UTF-8 nadat de .NET SDK een opdracht heeft uitgevoerd. Het is mogelijk dat gebruikers op dat gedrag kwamen vertrouwen, vandaar dat dit een belangrijke wijziging is.
Bovendien wijzigt de .NET SDK de codering niet meer in UTF-8 op oudere Windows 10-versies die deze niet volledig ondersteunen.
Vorig gedrag
- De SDK heeft de codering van een terminal gewijzigd nadat een opdracht is uitgevoerd, zoals
dotnet build
. - De SDK heeft de UTF-8-codering gebruikt om niet-Engelse tekens correct weer te geven, zelfs in versies van Windows 10 die UTF-8 niet officieel ondersteunen. Het gedrag is niet gedefinieerd voor deze versies.
Nieuw gedrag
- De SDK wijzigt de terminalcodering niet na het afsluiten voor andere programma's.
- Standaard gebruikt de SDK geen UTF-8 meer voor Windows-versies die deze niet ondersteunen.
Versie geïntroduceerd
7.0.3xx .NET 8 Preview 3
Type wijziging die fouten veroorzaken
Deze wijziging kan van invloed zijn op binaire compatibiliteit. Het is ook een gedragsverandering.
Reden voor wijziging
Er is een bestaande fout optreedt waarbij de .NET SDK de codering op de console voor andere programma's beïnvloedde. Dat was een fout die is opgelost, wat resulteert in deze wijziging die fouten veroorzaakt.
Oudere versies van Windows 10 (dat wil gezegd, versies vóór de update van november 2019) bieden geen ondersteuning voor UTF-8, dus het standaardgedrag mag geen UTF-8-codering gebruiken. In plaats daarvan is er nu een opt-in beschikbaar.
Aanbevolen actie
Als uw app de codepagina in Windows moet wijzigen, kan deze een proces uitvoeren om de chcp
opdracht aan te roepen. Uw app mag niet afhankelijk zijn van de .NET SDK om de codering te wijzigen.
Voor oudere Windows 10-versies die UTF-8 niet officieel ondersteunen waar u wilt dat de .NET SDK de codering blijft wijzigen in UTF-8 voor niet-Engelse talen, kunt u de omgevingsvariabele DOTNET_CLI_FORCE_UTF8_ENCODING
true
instellen op of 1.