Batch script │'.bat' veya '.cmd' dosyalarında Türkçe karakter hatası nasıl çözülür?

Batch üzerinde kodlama yaptığınızda Türkçe karakter kullanıyorsanız. Dosyayı çalıştırdığınız da karakterler bozuk gözükebilir. Bu sorunun iki çözüm yolu vardır.

Birinci yol ► chcp 65001;

Komut dosyası içine chcp 65001 komutu uygulanarak kod sayfası değiştirilmelidir. Bu komut Türkçe karakterlerin artık bozuk görünmesini engelleyecektir. Ancak bazı handikapları var. Windows 10 altındaki sürümlerde bu komut çalışmaz. Ayrıca .bat/cmd dosyası içinde Powershell komutu uyguladığınızda komut ekranı kompakt hale gelecektir. Bunun olmasını engellemek istiyorsanız kod sayfasını powershell komutunu uygulamadan önce chcp 437 olarak değiştirip, powershell işlemi sonrası yeniden chcp 65001 uygulayarak kompakt ekran sorununu giderebilirsiniz.

echo off
chcp 65001
cls
:: Powershell komutu uygulamadan önce kod sayfasını chcp 437 yapıyoruz
:: Bu Powershell komutu uygulandığında kompakt mod oluşmasını engeller
chcp 437 > NUL
Powershell -C "Get-CimInstance Win32_OperatingSystem | Select-Object Caption"
:: Powershell komutu uygulandıktan sonra Türkçe karakter sorunu yaşanmaması için chcp 65001 kod sayfası komutunu uyguluyoruz
chcp 65001 > NUL
echo test



İkinci yol ► OEM 857;
Bu yolu uygulamak için Notepad++ uygulamasını yüklemeniz gerekiyor. Notepad++ uygulamasını yükledikten sonra .bat dosyası içine echo off&cls gibi kısa iki satır kod yazın. İçeride bir şeyler yazmaz ise siz değiştirseniz bile yazdığınızda UTF-8 olur. Yöntemi uygulamak için üst menüden Kodlama > Karakter Takımı > Türkçe > OEM857 seçin. İlk yöntemde bahsettiğimiz gibi bununda iyi ve kötü yanları bulunmaktadır. OEM857 uyguladıktan sonra çalışmanızı kaydedip sonradan açtığınızda karşınıza bozuk karakterler çıkacaktır. Bunun sebebi Notepad++ ve tüm editörlerin UTF-8 karakter takımıyla açılmasıdır. Siz notepad++ ile kodlarınızı her açtığınızda Kodlama > Karakter Takımı > Türkçe > OEM857 uygulamak zorundasınız. Bunun güzel yanı Windows 10/11 ve altındaki sürümlerde çalışmasıdır. Bu bölümde Powershell komutlarıyla alakalı bir sorun bulunmamaktadır. 

Hangi yolu tercih etmeliyim?

• Windows 10 altı sürümler içinde çalışma yapıyorsanız veya yaptığınız çalışma onları da kapsıyorsa OEM 857 kullanmak zorundasınız.

Ancak Windows 10 ve üstü için bir çalışma yapıyorsanız kesinlikle chcp 65001 yani birinci yolu kullanmalısınız. Ayrıca projenizi açık olarak paylaştığınızda Github gibi sitelerde karakterlerin bozuk görünmesi hoş durmayacaktır.

Blogger tarafından desteklenmektedir.