다음을 통해 공유


콘솔 인코딩은 완료 후 UTF-8로 유지되지 않습니다.

CLI 콘솔 출력에서 언급된 버그는 .NET SDK가 전체 콘솔의 인코딩을 변경한 UTF-8 호환성이 손상되는 변경을 사용하여 수정되었습니다. .NET SDK가 명령을 실행한 후에는 콘솔 인코딩이 더 이상 UTF-8로 유지되지 않습니다. 사용자가 해당 동작에 의존하게 되었을 가능성이 있으므로 이는 호환성이 손상되는 변경입니다.

또한 .NET SDK는 완전히 지원하지 않는 이전 Windows 10 버전에서 더 이상 인코딩을 UTF-8로 변경하지 않습니다.

이전 동작

  • SDK는 dotnet build와 같은 명령을 실행한 후 터미널의 인코딩을 변경했습니다.
  • SDK는 공식적으로 UTF-8을 지원하지 않는 Windows 10 버전에서도 영어가 아닌 문자를 올바르게 렌더링하기 위해 UTF-8 인코딩을 사용했습니다. 해당 버전에서는 동작이 정의되지 않았습니다.

새 동작

  • SDK는 다른 프로그램 종료 후 터미널 인코딩을 변경하지 않습니다.
  • 기본적으로 SDK는 UTF-8을 지원하지 않는 Windows 버전에서는 더 이상 UTF-8을 사용하지 않습니다.

도입된 버전

7.0.3xx .NET 8 미리 보기 3

호환성이 손상되는 변경의 형식

이 변경은 이진 호환성에 영향을 줄 수 있습니다. 이는 동작 변경이기도 합니다.

변경 이유

.NET SDK가 다른 프로그램의 콘솔 인코딩에 영향을 미치는 기존 버그가 있었습니다. 이는 수정된 버그로 인해 이러한 호환성이 손상되는 변경이 발생했습니다.

이전 버전의 Windows 10(즉, 2019년 11월 업데이트 이전 버전)은 UTF-8을 지원하지 않았으므로 기본 동작은 UTF-8 인코딩을 사용해서는 안 됩니다. 대신 이제 옵트인 기능을 사용할 수 있습니다.

앱이 Windows에서 코드 페이지를 변경해야 하는 경우 프로세스를 실행하여 chcp 명령을 호출할 수 있습니다. 앱은 인코딩을 변경하기 위해 .NET SDK를 사용해서는 안 됩니다.

UTF-8을 공식적으로 지원하지 않는 이전 Windows 10 버전에서 .NET SDK가 영어가 아닌 언어에 대해 인코딩을 UTF-8로 계속 변경하도록 하는 경우 환경 변수 DOTNET_CLI_FORCE_UTF8_ENCODINGtrue 또는 1로 설정할 수 있습니다.

참고 항목