Megosztás a következőn keresztül:


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 builda .
  • 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.

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 .

Lásd még