Bagikan melalui


Pengodean konsol tidak tetap UTF-8 setelah selesai

Bug yang disebutkan dalam output konsol CLI menggunakan perubahan melanggar UTF-8 , di mana .NET SDK mengubah pengodean seluruh konsol, telah diperbaiki. Pengodean konsol tidak lagi tetap UTF-8 setelah .NET SDK menjalankan perintah. Ada kemungkinan bahwa pengguna bergantung pada perilaku tersebut, sehingga ini adalah perubahan signifikan.

Selain itu, .NET SDK tidak lagi mengubah pengodean ke UTF-8 pada versi Windows 10 yang lebih lama yang tidak sepenuhnya mendukungnya.

Perilaku sebelumnya

  • SDK mengubah pengodean terminal setelah menjalankan perintah seperti dotnet build.
  • SDK menggunakan pengodean UTF-8 untuk merender karakter non-Bahasa Inggris dengan benar, bahkan pada versi Windows 10 yang tidak secara resmi mendukung UTF-8. Perilaku tidak terdefinisi pada versi tersebut.

Perilaku baru

  • SDK tidak mengubah pengodean terminal setelah keluar untuk program lain.
  • Secara default, SDK tidak lagi menggunakan UTF-8 untuk versi Windows yang tidak mendukungnya.

Versi yang diperkenalkan

7.0.3xx .NET 8 Pratinjau 3

Jenis perubahan yang memutus kompatibilitas

Perubahan ini dapat memengaruhi kompatibilitas biner. Ini juga merupakan perubahan perilaku.

Alasan perubahan

Ada bug yang ada di mana .NET SDK memengaruhi pengodean pada konsol untuk program lain. Itu adalah bug yang telah diperbaiki, sehingga menyebabkan perubahan besar ini.

Versi Windows 10 yang lebih lama (yaitu, versi sebelum pembaruan November 2019) tidak mendukung UTF-8, sehingga perilaku default tidak boleh menggunakan pengodean UTF-8. Sebagai gantinya, opsi pendaftaran sekarang tersedia.

Jika aplikasi Anda perlu mengubah halaman kode di Windows, aplikasi dapat menjalankan proses untuk memanggil chcp perintah. Aplikasi Anda tidak boleh mengandalkan .NET SDK untuk mengubah pengodean.

Untuk versi Windows 10 yang lebih lama yang tidak secara resmi mendukung UTF-8 di mana Anda ingin .NET SDK terus mengubah pengodean ke UTF-8 untuk bahasa non-Bahasa Inggris, dapatkah Anda mengatur variabel DOTNET_CLI_FORCE_UTF8_ENCODING lingkungan ke true atau 1.

Lihat juga