PHP ile çalışırken excelden veya başka bir veritabanından,tablodan (Mysql,Mssql v.s.) veri kullanabilirsiniz. Bunu yaparken aldığınız verilerin karakter kodlaması farklı olabilir örneğin sizin kendi veritabanızda veya sayfanızda kullandığınız karakter kodlamasını UTF-8 veya UTF-8 unicode olduğunu düşünelim. Ancak kaynak olarak kullandığınız veriler ISO-8859-9 olduğunu var sayalım. Verileri direk değişkene alıp sayfada göstermek veya veritabanına kaydetmek özellikle türkçe karakterlerde dil kodlama sorunu yaşatacaktır.
Tek başına mb_detect_encoding() fonksiyonunu kullanmak her zaman işe yaramaz. Çünkü bu fonksiyonda karakter kodlama yanlış algılanabilir. Bu yüzden algılaması gerektiği karakter kodlamalara ilk önce bir sıra vereceğiz.
mb_detect_order("ISO-8859-9,UTF-8");Bu fonksiyonda daha fazla karakter kodlama tipi kullanabilirsiniz ben örnek olarak iki tane yaptım. Algılanacak ilk karakter kodlamayı ISO-8859-9 olarak başlat dedim böylece ilk bu karakter kodlamayı algılayacaktır diğer türlü kendisinin bir default sıralaması olduğundan farklı bir kodlama algılıyor ve daha fazlasını denemiyor. İkinci olarak ta UTF-8 olarak algıla dedim ama tabi bunun bir tesiri yok zaten kodlama UTF 8 ise bu fonksiyonları kullanmanıza gerek kalmayacaktır. Tabi şuanda ISO-8859-9 dan UTF-8 çevrimini anlatıyorum tam tersini de yapabilirsiniz. Bundan sonra asıl kodumuzu yazabiliriz.
mb_convert_encoding($cevirlecekdata,"UTF-8",mb_detect_encoding($cevrilecekdata));Yazılım dillerinde işlem sağdan sola doğru çalıştığından ilk önce mb_detect_encoding ile verinin belirlediğimiz sıralamayla hangi kodlama olduğunu çözecek mb_convert_encoding fonksiyonuda bu veriyi UTF-8'e çevirecektir. mb_convert_encoding te parametreler şöyledir; mb_convert_encoding($veri, 'cevrilecek_kodlama', 'cevrilen_kodlama');
Sıralamayı deneme yanılma yaparak da sonunda sorunu çözmüş olacaksınız.
0 yorum:
Yorum Gönder