A konzolkódolás nem marad UTF-8 a befejezés után
A CLI-konzol kimenetében említett hiba UTF-8 kompatibilitástörő változást használ, ahol a .NET SDK módosította a teljes konzol kódolását, kijavítottuk. A konzol kódolása már nem marad UTF-8, miután a .NET SDK végrehajt egy parancsot. Lehetséges, hogy a felhasználók erre a viselkedésre támaszkodtak, ezért ez egy kompatibilitástörő változás.
Emellett a .NET SDK már nem módosítja a kódolást UTF-8-ra a régebbi Windows 10-verziókon, amelyek nem támogatják teljes mértékben.
Előző viselkedés
- Az SDK módosította a terminál kódolását egy parancs, például
dotnet build
a . - Az SDK az UTF-8 kódolással helyesen renderelte a nem angol karaktereket, még a Windows 10 olyan verzióiban is, amelyek hivatalosan nem támogatták az UTF-8-at. A viselkedés nincs meghatározva ezeken a verziókon.
Új viselkedés
- Az SDK nem módosítja a terminálkódolást a többi programból való kilépés után.
- Alapértelmezés szerint az SDK már nem használja az UTF-8-at olyan Windows-verziókhoz, amelyek nem támogatják azt.
Bevezetett verzió
7.0.3xx .NET 8 előzetes verzió 3
A kompatibilitástörő változás típusa
Ez a változás befolyásolhatja a bináris kompatibilitást. Ez viselkedésbeli változás is.
A változás oka
Volt egy meglévő hiba, amely miatt a .NET SDK hatással volt a konzol más programok kódolására. Ezt a hibát kijavítottuk, ami ezt a kompatibilitástörő változást eredményezte.
A Windows 10 régebbi verziói (azaz a 2019. novemberi frissítés előtti verziók) nem támogatták az UTF-8-at, ezért az alapértelmezett viselkedés nem az UTF-8 kódolás használata lehet. Ehelyett már elérhető egy bejelentkezés.
Javasolt művelet
Ha az alkalmazásnak módosítania kell a windowsos kódlapot, futtathat egy folyamatot a chcp
parancs meghívásához. Az alkalmazásnak nem szabad a .NET SDK-ra támaszkodnia a kódolás módosításához.
Az olyan régebbi Windows 10-verziók esetében, amelyek hivatalosan nem támogatják az UTF-8-at, ahol azt szeretné, hogy a .NET SDK továbbra is UTF-8-ra módosítsa a kódolást a nem angol nyelvű nyelvek esetében, beállíthatja a környezeti változót DOTNET_CLI_FORCE_UTF8_ENCODING
1-re vagy 1-re true
.