Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Если переменная среды DOTNET_CLI_UI_LANGUAGE или VSLANG задана, выходные данные консоли .NET CLI и кодировка входных данных изменяются на UTF-8, чтобы кодовая страница также изменялась на UTF-8. Это новое поведение позволяет правильно отображать символы из языков, заданных этими переменными среды.
Это изменение влияет только на операционные системы Windows (кодировка была нормальной на других платформах). Кроме того, она применяется только к 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 старше Windows 10 1909 не полностью поддерживают UTF-8 и могут возникнуть проблемы после этого изменения. (Начиная с пакета SDK для .NET 8 и .NET 7.0.300 пакет SDK для .NET больше не изменяет кодировку на UTF-8 в этих версиях по умолчанию. Чтобы вернуться к использованию UTF-8 даже в версиях Windows 10, которые не поддерживают его, используйте DOTNET_CLI_FORCE_UTF8_ENCODING переменную среды.)
Кроме того, возникла ошибка , из-за которой пакет SDK может повлиять на кодировку других команд и программ, вызываемых в той же командной строке после завершения выполнения пакета SDK. Теперь, когда пакет SDK чаще изменяет кодировку, влияние этой ошибки может увеличиться. Однако исправлена ошибка в пакете SDK для .NET 8 и .NET 7.0.300. Дополнительные сведения см. в разделе SDK, который больше не изменяет кодировку консоли после завершения.
Представленная версия
7.0.3xx .NET 8( предварительная версия 1)
Тип разрушающего изменения
Это изменение может повлиять на совместимость источников и совместимость двоичных файлов. Это также изменение поведения.
Причина изменения
Использование .NET CLI на языках, отличных от английского языка, обеспечивает плохой интерфейс.
**
Разработчики, которые еще не использовали переменные VSLANG и DOTNET_CLI_UI_LANGUAGE, не затронуты. Влияние должно быть минимальным, так как этот языковой параметр изначально не работал бы хорошо из-за искаженных символов. Только разработчики, использующие Windows 10 или более позднюю версию, могут быть затронуты, причем большинство из них, скорее всего, использует версию 1909 или более позднюю.
Устаревшие сценарии использования уже менее вероятны для поддержки некорректно функционирующих языков, так что, возможно, вам ещё меньше захочется использовать другой язык, который может столкнуться с этой проблемой.
Рекомендуемое действие
- Если вы используете старую версию Windows 10, обновите ее до версии 1909 или более поздней.
- Если вы хотите использовать устаревшую консоль или сталкиваетесь с проблемами сборки или другими из-за изменения кодирования, отключите
VSLANGиDOTNET_CLI_UI_LANGUAGE, чтобы отключить это изменение.