CLI 콘솔 출력은 UTF-8을 사용합니다.

DOTNET_CLI_UI_LANGUAGE 또는 VSLANG 환경 변수가 설정되면 코드 페이지도 UTF-8로 변경될 수 있도록 .NET CLI 콘솔 출력 및 입력 인코딩이 UTF-8로 변경됩니다. 이 새로운 동작을 사용하면 해당 환경 변수에 의해 설정된 언어의 문자를 올바르게 렌더링할 수 있습니다.

이 변경 내용은 Windows 운영 체제에만 영향을 줍니다(다른 플랫폼에서는 인코딩이 괜찮았습니다). 또한 사용자가 설정한 UI 문화권이 영어가 아닌 Windows 10 이상 버전에만 적용됩니다.

이전 동작

중국어, 독일어, 일본어 및 러시아어를 포함한 특정 언어의 문자는 때때로 왜곡된 문자로 표시되거나 콘솔에 ?(으)로 표시됩니다. 예시:

C:\>dotnet build
MSBuild version 17.3.0-preview[...] for .NET
  ???????????????...

새 동작

.NET 7(버전 7.0.3xx) 및 .NET 8부터 문자가 올바르게 렌더링됩니다. 인코딩 및 코드 페이지가 모두 변경됩니다. 예시:

C:\>dotnet build
MSBuild version 17.3.0-preview[...] for .NET
  正在确定要还原的项目…

Windows 10 1909 이전 버전의 Windows는 UTF-8을 완전히 지원하지 않으며 이 변경 후 문제가 발생할 수 있습니다. .NET 8 및 .NET 7.0.300 SDK부터 .NET SDK는 기본적으로 이러한 버전에서 인코딩을 UTF-8로 더 이상 변경하지 않습니다. 지원하지 않는 Windows 10 버전에서도 UTF-8을 다시 사용하도록 옵트인하려면 DOTNET_CLI_FORCE_UTF8_ENCODING 환경 변수를 사용합니다.)

또한 SDK 실행이 완료된 후 SDK가 동일한 명령 프롬프트에서 호출되는 다른 명령 및 프로그램의 인코딩에 영향을 줄 수 있는 기존 버그가 있었습니다. 이제 SDK가 인코딩을 더 자주 변경하므로 이 버그의 영향이 증가할 수 있습니다. 그러나 .NET 8 및 .NET 7.0.300 SDK에서 버그가 수정되었습니다. 자세한 내용은 완료 후 SDK가 더 이상 콘솔 인코딩을 변경하지 않음을 참조하세요.

도입된 버전

7.0.3xx .NET 8 미리 보기 1

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

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

변경 이유

영어가 아닌 언어로 .NET CLI를 사용하면 환경이 좋지 않았습니다.

VSLANGDOTNET_CLI_UI_LANGUAGE 변수를 아직 사용하지 않은 개발자는 영향을 받지 않습니다. 이 언어 설정은 처음에 왜곡된 문자로 인해 제대로 작동하지 않았기 때문에 영향을 최소화해야 합니다. 또한 Windows 10 이상을 사용하는 개발자만 영향을 받을 수 있으며, 대부분은 버전 1909 이상을 사용할 가능성이 높습니다.

레거시 시나리오는 이미 중단된 언어를 지원할 가능성이 적으므로 이 중단을 노출할 수 있는 다른 언어를 사용할 가능성은 거의 없습니다.

  • 이전 버전의 Windows 10을 사용하는 경우 버전 1909 이상으로 업그레이드합니다.
  • 레거시 콘솔을 사용하려는 경우 또는 인코딩 변경으로 인해 빌드 문제 또는 기타 문제가 발생하는 경우 VSLANGDOTNET_CLI_UI_LANGUAGE을 설정 해제하여 이 변경 사항을 비활성화합니다.

참고 항목