CLI-konsolutdata använder UTF-8
DOTNET_CLI_UI_LANGUAGE
Om miljövariabeln eller VSLANG
anges ändras .NET CLI-konsolens utdata och indatakodning till UTF-8, så att kodsidan också kan ändras till UTF-8. Det här nya beteendet gör att tecken från språk som anges av dessa miljövariabler återges korrekt.
Den här ändringen påverkar endast Windows-operativsystem (kodningen var okej på andra plattformar). Dessutom gäller den endast för Windows 10- och senare versioner där användargränssnittskulturen som användaren anger inte är engelsk.
Tidigare beteende
Tecken på vissa språk, inklusive kinesiska, tyska, japanska och ryska, skulle ibland visas som förvrängda tecken eller som ?
i konsolen. Till exempel:
C:\>dotnet build
MSBuild version 17.3.0-preview[...] for .NET
???????????????...
Nytt beteende
Från och med .NET 7 (version 7.0.3xx) och .NET 8 återges tecknen korrekt. Både kodningen och kodsidan ändras. Till exempel:
C:\>dotnet build
MSBuild version 17.3.0-preview[...] for .NET
正在确定要还原的项目…
Versioner av Windows som är äldre än Windows 10 1909 har inte fullt stöd för UTF-8 och kan få problem efter den här ändringen. (Från och med .NET 8 och .NET 7.0.300 SDK ändrar .NET SDK inte längre kodningen till UTF-8 i dessa versioner, som standard. Om du vill använda UTF-8 igen även i Windows 10-versioner som inte stöder det använder du DOTNET_CLI_FORCE_UTF8_ENCODING
miljövariabeln.)
Dessutom fanns det en befintlig bugg där SDK:et kan påverka kodningen av andra kommandon och program som anropas i samma kommandotolk när SDK:et har slutfört körningen. Nu när SDK:et oftare ändrar kodningen kan effekten av den här buggen öka. Felet har dock åtgärdats i .NET 8 och .NET 7.0.300 SDK. Mer information finns i SDK:n ändrar inte längre konsolkodning efter slutförande.
Version introducerad
7.0.3xx .NET 8 Förhandsversion 1
Typ av icke-bakåtkompatibel ändring
Den här ändringen kan påverka källkompatibilitet och binär kompatibilitet. Det är också en beteendeförändring.
Orsak till ändringen
Att använda .NET CLI på icke-engelska språk gav en dålig upplevelse.
Utvecklare som inte redan använde variablerna VSLANG
och DOTNET_CLI_UI_LANGUAGE
påverkas inte. Effekten bör vara minimal, eftersom den här språkinställningen inte skulle ha fungerat bra i första hand på grund av förvrängda tecken. Dessutom kan endast utvecklare som använder Windows 10 eller senare påverkas, varav de flesta troligen använder version 1909 eller senare.
De äldre scenarierna är redan mindre benägna att stödja de brutna språken, så det är osannolikt att du vill använda ett annat språk som kan exponera den här pausen ändå.
Rekommenderad åtgärd
- Om du använder en äldre version av Windows 10 uppgraderar du till version 1909 eller senare.
- Om du vill använda en äldre konsol eller stöter på byggproblem eller andra på grund av kodningsändringen tar du bort och
VSLANG
DOTNET_CLI_UI_LANGUAGE
inaktiverar den här ändringen.