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.
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:
std::locale::global(locale("TR")); //Burada direk Türkiye için yerelleştirme yapıldı.
std::locale::global(locale("")); //Burada ise programın çalıştırıldığı bilgisayarın varsayılan ülkesine göre yerelleştirme yapıldı.
Şimdi ise yukarıda gösterdiğim, Türkçe karakter içeren cümleyi Locale
özelliğini Türkçe yaparak test edelim:
#include "stdafx.h"
#include <iostream>
using namespace std;
int main()
{
locale::global(locale("TR")); //TR yazdığımız yeri boş bırakarak bilgisayarınızda varsayılan olarak ayarlanmış ülkeyi kullanabilirsiniz.
cout<<""Fazla çikolata yemek diş sağlığını bozabilir" cümlesinde Turkce karakterler mevcut"<<endl;
system("Pause");
return 0;
}
Programın çıktısı bu sefer istediğimiz gibi olmuş mu diye bakalım:
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:
#include "stdafx.h"
#include <iostream>
using namespace std;
int main()
{
locale::global(locale("")); // sol taraftaki ülkeyi belirttiğimiz tırnağın içini boş bırakıyoruz.
cout<<""Fazla çikolata yemek diş sağlığını bozabilir" cümlesinde Turkce karakterler mevcut"<<endl;
system("Pause");
return 0;
}
Ayrıntılı İngilizce Kaynak: CPP-Reference
C Dili İçin İngilizce Kaynak: cplusplus.com