Share via


完了後にコンソール エンコードが 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_ENCODINGtrue または 1 に設定できます。

こちらもご覧ください