mb_convert_encoding Fonksiyonu
Başka bir siteden file_get_contents ile veri alırken karakter seti uyuşmazlığından türkçe karakterler ekrana bozuk bir şekilde çıktı. Biraz araştırdıktan sonra mb_convert_encoding fonksiyonu ile karakter dönüştürmesi yaparak sorunu çözdüm. Bu fonksiyondan sizlere biraz bahsedeyim.
Fonksiyonun kullanışına gelecek olursak üç adet parametre almaktadır. Dönüştürülecek olan metni ilk parametre, hangi karakter setine dönüştüreceğimizi ikinci parametre, hangi karakter setinden dönüştüreceğimizi ise üçünücü parametre olarak giriyoruz.
Bu fonksiyonunun kullanımına bir örnek ile bakalım.
İlk olarak veri_cek.php adında bir sayfa oluşturuyoruz. Bu sayfanın karakter setini iso-8859-9 olarak belirliyoruz ;
<?php
//sayfamızın karakter setini iso-8859-9 olarak belirliyoruz
header('Content-Type: text/html; charset=iso-8859-9');
echo "Türkçe karakterler ÇçĞğıİÖöŞşÜü";
?>
Daha sonra veri_goster.php adında bir sayfa oluşturalım ve karakter setini UTF-8 olarak belirleyelim.
<?php
//Sayfamızın karakter setini UTF-8 olarak belirliyoruz
header('Content-Type: text/html; charset=UTF-8');
$url = 'http://www.serkandaglioglu.com/demo/MbConvertEncoding/veri_cek.php' ;
$kaynak = file_get_contents($url);
echo $kaynak;
?>
İki sayfanında karakter seti farklı olmuş oldu. veri_goster.php sayfasında file_get_contents fonksiyonu ile veri_cek.php sayfasının içeriğini çekmiş olduk. Şimdi veri_goster.php sayfasını çalıştırdığımızda ekrana şöyle bir çıktı verecek.
Türkçe karakterleri gördüğünüz gibi ekrana bozuk çıktı. Türkçe karakterlerin sorunsuz bir şekilde gösterilmesi için mb_convert_encoding ile ISO-8859-9 karakter setinden UTF-8 e dönüşüm yapıyoruz. veri_goster.php dosyamızın son hali aşağıdaki gibi oluyor.
<?php
header('Content-Type: text/html; charset=iso-8859-9');
$url = 'http://www.serkandaglioglu.com/demo/MbConvertEncoding/veri_cek.php' ;
$kaynak = file_get_contents($url);
//Karakter dönüşümünü yapıyoruz
$kaynak = mb_convert_encoding($kaynak, "UTF-8", "ISO-8859-9");
echo $kaynak;
?>
mb_convert_encoding() fonksiyonunu ekledikten sonra türkçe karakterler ekrana sorunsuz bir şekilde yazdırıldı.
Bu fonksiyonu php.net sayfasından daha detalı olarak inceleyebilirsiniz.
Paylaş
Benzer Yazılar
Yorumlar >> (1 Yorum)
dunkof 24 Şub 2011, Pe 02:10 tarihinde yazılmış.bu fonksiyonun bug ı var diye biliyordum
Yorum Yap
Yorum Yazarken
Basit Html etiketlerini kullanabilirsiniz.
Kodlarınızı <pre></pre> etiketleri arasına yazınız.

