Fırat Eşki


Kodların Dünyası…


C++ Locale – Türkçe Karakter Sorunu

C++ veya C dilinde birçok kişinin canını sıkan konuya değiniyoruz. Yaptığınız programlarda Türkçe karakterleri konsola yazdırmak istediğimizde kodlamadan dolayı anlamsız karakterler görüyorsunuz. Yani Türkçe karakter sorunu ile karşılaşıyorsunuz. Aşağıdaki fotoğraf sayesinde ne demek istediğimi anlayabilirsiniz.

cpp-tr-karakter-ornek

Gördüğünüz gibi “Fazla çikolata yemek diş sağlığını bozabilir” cümlesindeki Türkçe karakter olan “ç, ş, ğ, ı” harfleri yerini anlamsız karakterlere bıraktı. Peki bu sorunu nasıl çözebiliriz.

Bu sorunu çözmek için C++ programına ‘Locale’ bilgisini veriyoruz. Bu ‘Locale’ dediğimiz şey ‘Yerel’ anlamına geliyor. Yani biz programın ‘Locale’ özelliğini istediğimiz ülkenin kodunu girerek veya direk programın çalıştırıldığı bilgisayarın varsayılan ülkeye göre ayarlanmasını sağlıyoruz ve dolayısıyla o ülkenin dil, tarih, para birimi gibi C++ dilinin ortamında barındırdığı, lokasyona göre değişiklik gösteren özelliklerini istediğimiz ülke için ayarlamış oluyoruz. Lafı daha fazla uzatmadan örneğe geçelim.

Locale” özelliğine iostream kütüphanesi içindeki std namespace adı altından erişebiliyoruz. Genel kullanımı şu şekildedir:

Şimdi ise yukarıda gösterdiğim, Türkçe karakter içeren cümleyi “Locale” özelliğini Türkçe yaparak test edelim:

Programın çıktısı bu sefer istediğimiz gibi olmuş mu diye bakalım:

cpp-tr-karakter-ornek2

Evet, resimde de görüldüğü gibi Locale özelliği TR olarak belirttikten sonra Türkçe karakter sorunu ortadan kalktı.

Dilerseniz aşağıdaki örnekteki gibi Locale özelliğini bilgisayarda yani işletim sisteminde varsayılan olarak kabul edilen ülkeye göre ayarlayabiliyorsunuz:

Siz her ne kadar lokasyonu TR olarak ayarlasanız da programın çalıştığı işletim sisteminde Türkiye lokasyonuna ait bilgiler yoksa yine mevcut sorunla karşılaşabileceğinizi belirtelim.


Ayrıntılı İngilizce Kaynak: CPP-Reference

C Dili İçin İngilizce Kaynak: cplusplus.com


Merhaba, ben Fırat Eşki bu da benim blogum. Bilgisayar ve teknoloji dünyasını yakından takip ediyorum. Küçük yaşta giriş yapmış olduğum kod dünyasına olan ilgim ve sevgim gün geçtikçe artarak devam ediyor.