Aracılığıyla paylaş


CLI konsol çıkışı UTF-8 kullanıyor

DOTNET_CLI_UI_LANGUAGE veya VSLANG ortam değişkeni ayarlanırsa, .NET CLI konsol çıkışı ve giriş kodlaması UTF-8 olarak değişir, böylece kod sayfası utf-8 olarak da değişebilir. Bu yeni davranış, bu ortam değişkenleri tarafından ayarlanan dillerdeki karakterlerin doğru işlenmesini sağlar.

Bu değişiklik yalnızca Windows işletim sistemlerini etkiler (kodlama diğer platformlarda iyiydi). Ayrıca, yalnızca kullanıcı tarafından ayarlanan kullanıcı arabirimi kültürünün İngilizce olmayan Windows 10 ve sonraki sürümleri için geçerlidir.

Önceki davranış

Çince, Almanca, Japonca ve Rusça gibi belirli dillerdeki karakterler bazen bozuk karakterler olarak veya konsolda olduğu gibi ? görüntülenir. Örneğin:

C:\>dotnet build
MSBuild version 17.3.0-preview[...] for .NET
  ???????????????...

Yeni davranış

.NET 7 (sürüm 7.0.3xx) ve .NET 8'den başlayarak karakterler doğru işlenir. Hem kodlama hem de kod sayfası değişir. Örneğin:

C:\>dotnet build
MSBuild version 17.3.0-preview[...] for .NET
  正在确定要还原的项目…

Windows 10 1909'dan eski Windows sürümleri UTF-8'i tam olarak desteklemez ve bu değişiklikten sonra sorunlarla karşılaşabilir. (.NET 8 ve .NET 7.0.300 SDK'dan başlayarak, .NET SDK artık bu sürümlerde kodlamayı varsayılan olarak UTF-8 olarak değiştirmez. UtF-8'i desteklemeyen Windows 10 sürümlerinde bile kullanmaya geri dönmek için ortam değişkenini DOTNET_CLI_FORCE_UTF8_ENCODING kullanın.)

Ayrıca, SDK yürütme tamamlandıktan sonra SDK'nın aynı komut isteminde çağrılan diğer komutların ve programların kodlamasını etkileyebildiği mevcut bir hata vardı. SDK kodlamayı daha sık değiştirdiğini göre bu hatanın etkisi artabilir. Ancak, hata .NET 8 ve .NET 7.0.300 SDK'sında düzeltildi. Daha fazla bilgi için bkz. TAMAMLANDıktan sonra SDK artık konsol kodlamasını değiştirmez.

Sürüm kullanıma sunulmuştur

7.0.3xx .NET 8 Önizleme 1

Hataya neden olan değişikliğin türü

Bu değişiklik kaynak uyumluluğunu ve ikili uyumluluğu etkileyebilir. Bu aynı zamanda davranışsal bir değişikliktir.

Değişiklik nedeni

.NET CLI'yi İngilizce olmayan dillerde kullanmak kötü bir deneyim sağladı.

ve değişkenlerini henüz kullanmayan VSLANGDOTNET_CLI_UI_LANGUAGE geliştiriciler etkilenmez. Bu dil ayarı bozuk karakterler nedeniyle ilk etapta iyi çalışmayacağı için etki en düşük düzeyde olmalıdır. Ayrıca, yalnızca Windows 10 veya üzerini kullanan geliştiriciler etkilenebilir ve bunların çoğu büyük olasılıkla sürüm 1909 veya üzerini kullanıyor olabilir.

Eski senaryoların bozuk dilleri destekleme olasılığı zaten daha düşüktür, bu nedenle bu kesmeyi yine de ortaya çıkarabilecek başka bir dil kullanmak isteme olasılığınız düşüktür.

  • Windows 10'un eski bir sürümünü kullanıyorsanız 1909 veya sonraki bir sürüme yükseltin.
  • Eski bir konsol kullanmak istiyorsanız veya kodlama değişikliği nedeniyle derleme sorunlarıyla veya diğerleriyle karşılaşıyorsanız, bu değişikliği kaldırın VSLANG ve DOTNET_CLI_UI_LANGUAGE devre dışı bırakın.

Ayrıca bkz.