La codificación de la consola no permanece UTF-8 tras finalizar la ejecución

Se ha corregido el error mencionado en la salida de la consola de la CLI usa UTF-8 (cambio importante), por el que el SDK de .NET cambiaba la codificación de toda la consola. La codificación de consola ya no permanece como UTF-8 después de que el SDK de .NET ejecute un comando. Es posible que los usuarios se guíen por ese comportamiento, por lo que se trata de un cambio importante.

Además, el SDK de .NET ya no cambia la codificación a UTF-8 en versiones anteriores de Windows 10 que no lo admiten por completo.

Comportamiento anterior

  • El SDK cambió la codificación de un terminal después de ejecutar un comando como dotnet build.
  • El SDK usó la codificación UTF-8 para representar correctamente caracteres no en inglés, incluso en versiones de Windows 10 que no admitían oficialmente UTF-8. El comportamiento no estaba definido para esas versiones.

Comportamiento nuevo

  • El SDK no cambia la codificación del terminal después de salir de otros programas.
  • De forma predeterminada, el SDK ya no usa UTF-8 para versiones de Windows que no lo admitan.

Versión introducida

7.0.3xx de .NET 8 Preview 3

Tipo de cambio importante

Este cambio puede afectar a la compatibilidad binaria. También es un cambio de comportamiento.

Motivo del cambio

Hubo un error en el que el SDK de .NET afectaba a la codificación en la consola de otros programas. Ese error se ha corregido y ha dado lugar a este cambio importante.

Las versiones anteriores de Windows 10 (es decir, las versiones anteriores a la actualización de noviembre de 2019) no admitían UTF-8, por lo que el comportamiento predeterminado no debe ser usar la codificación UTF-8. En su lugar, ahora es posible elegir.

Si su aplicación necesita cambiar la página de códigos en Windows, puede ejecutar un proceso para invocar el comando chcp. La aplicación no debe depender del SDK de .NET para cambiar la codificación.

En el caso de las versiones anteriores de Windows 10 que no admitan oficialmente UTF-8 para las que desee que el SDK de .NET siga modificando la codificación a UTF-8 para idiomas distintos al inglés, puede establecer la variable de entorno DOTNET_CLI_FORCE_UTF8_ENCODING en true o en 1.

Consulte también