次の方法で共有


コンソール エンコードが完了後も UTF-8 のままにならない

CLI コンソール出力に記載されているバグ では、UTF-8 の破壊的変更が使用されています。.NET SDK によってコンソール全体のエンコードが変更されましたが、修正されています。 .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 バージョンでは使用されなくなりました。

導入されたバージョン

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 に設定できます。

こちらも参照ください