完了後にコンソール エンコードが UTF-8 のままにならない
「CLI コンソール出力での UTF-8 の使用」の破壊的変更で説明されているバグ (.NET SDK でコンソール全体のエンコードが変更された) が修正されました。 .NET SDK でコマンドを実行した後、コンソール エンコードは UTF-8 のままではなくなりました。 ユーザーがその動作に依存するようになった可能性があるため、これは破壊的変更となります。
さらに、.NET SDK では、それが完全にサポートされていない古い Windows 10 バージョンで、エンコードが UTF-8 に変更されなくなりました。
以前の動作
- SDK で、
dotnet build
などのコマンドを実行した後にターミナルのエンコードが変更されました。 - SDK では、UTF-8 エンコードを使って英語以外の文字を正しくレンダリングしていました (UTF-8 を正式にサポートしていない Windows 10 のバージョンでも)。 それらのバージョンでは動作が未定義でした。
新しい動作
- SDK では、他のプログラムの終了後にターミナル エンコードが変更されません。
- 既定では、サポートされていない Windows バージョンでは SDK で UTF-8 が使用されなくなりました。
導入されたバージョン
7.0.3xx .NET 8 Preview 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_ENCODING
を true
または 1 に設定できます。
こちらもご覧ください
.NET