Anasayfa

Bu dersimizde php ile kullanabildiğimiz encoding yani dil kodlamarı arasında dönüştürme işleminine yarayan mutli byte fonksiyonlarını inceleyeceğiz. Bu mutibyte fonksiyonlarından convert encoding fonksiyonun ne işe yaradığını parametresini ve uygulamalarını değincez. php.net ten manuelden ilgili fonksiyonun sayfasına giriyorum. mb_convert_encoding komutunun sayfasına girdiğimde bunun php 4 ten beri aktif olduğunu ve php 5 de geçerli olduğunu görüyorum. Şöyle bir kullanımına baktığımda ilgili metin için karakter dönüşümü yani dil kodlaması dönüşümü yaptığını görüyoruz. Aldığı parameteler olarak ilk parametre dönüştürmek istediğim metinken ikinci parametre hangi dil kodlamasına dönüştürüleceği üçüncü parametrede hangi dil kodlamasından dönüştürülme işleminin yapılacağıdır. İşte bu komutun parametlerini kullanarak ilgili sayfanın dil kodlamasını değiştirebilirim.

Şimdi bir a.php sayfası oluşturup bu sayfayı dreamweaverda açıyorum. Birinci bilmemiz gereken kavram burda page properties dediğimizde dosyaların dil kodlamaları mevcuttur. İşte title encoding kısmına geldiğimde şu an bu açılmış sayfanın utf-8 formatında kodlandığını görüyorum. Bunun windows formatnda kodlanmasını yani Türkçe Windows formatında kodlanmasını istersem. bunu seçtikten sonra uygula dediğimde ve tamam dediğimde artık bu sayfam iso formatında kodlanmış oluyor.

Html olarakta hatırlarsak

<http-equiv="Content-Type" content="text/html; charset=utf-8">  

bu şekilde content type ekleyerek ve iso formatımızın ISO-8859-9 olduğunu hatırlarsak bu sayfanın Türkçe kodlanmış  bir sayfa olduğunu görüyorum Burda vurgulamamız gereken noktayı tekrarlamak istersek Bir dosyanın kodlaması mevcut birde bizim yaptığımız işlemlerde kodlama mevcut. Bu sayfa şu an kaydetme itibari ile iso formatında kodlanmış durumda. Şimdi php sayfama php tagı kapatıp açtıktan sonra az önce manuelden bulduğum fonksiyonu alıp yerleştiriyorum. Normalde bu fonksiyonu çalıştırmaya kalktığımızda hata mesajıyla karşılaşabiliriz.

Php.ini dosyamızdan iligli fonksiyonun kütüphanesinin aktif olması gerekir. Dll lerde arama yaptığımda mb string dll yani php_mbstring.dll olarak isimlendirilen dosya bu fonksiyonların kullanılmasına izin vermektedir. Bu kütüphanem aktif değilse bunu şu an için kapatıp

;extension=php_mbstring.dll

sayfamızı bir çağırarak durumu görelim.Eğerki fonksiyon bilgisayarımızda kapalıysa yani kütüphane aktif değilse sayfayı çağırdığımızda call undefined function hatasını alırız.

<http-equiv="Content-Type" content="text/html; charset=utf-8">
<?php
mb_convert_encoding();
?>

Fatal error: Call to undefined function mb_convert_encoding() in D:\htdocs\ders\mb_convert.php on line 3

İşte bu hatayı aldığımızda php.ini mizi bulup ilgili dll i aktif etmemiz gerekir. Php.ini mizin doğru yolunu bulmak için ise bir info.php oluşturup sonra bu php dosyamızı açtıktan sonra içine phpinfo() yazarak ilgili sayfayı browserimizdan çağırdığımızda bize Loaded configuration file ile asıl php.ini dosyasının yerini söyler İşte biz bu dizine girip ilgili sayfayı açtığımızda bu düzenlediğimiz php.ini nin doğru php.ini olduğuna kesinlikle emin olabiliriz. Çünkü bir bilgisayarda birden fazla php.ini bulunabilir. İşte fonksiyonu kullanabilir hale geçmek için php_mbstring.dll i aktif hale getirirsek Eğerki php bilgisayarımızda modül olarak çalışıyorsa apache yani web sunucuyu tekrar başlatmamız gerekir.

Bundan sonra ise artık ilgili sayfayı çağırdığımızda kütüphane aktif olduğu için Fonksiyon bulunamadı hatasından kurtulmuş oluruz.

Warning: Wrong parameter count for mb_convert_encoding() in D:\htdocs\ders\mb_convert.php on line 3

Evet artık fonksiyonu kullanabilir. İşleyişine geçebiliriz. İşte bu fonskiyonu kullanırken şu an az önce söylediğim gibi sayfamız iso formatında. İşte ilk parametre olarak dönüştürme yapmak istediğimiz metni veririz. İkinci parametre ki bu metin içinde Türkçe ifadeler yer alabilir.Türkçe karakterler Bu şekilde dosyamızın içerisinde yer alabilir. İkinci paremetrenin hangi dil kodlamasına dönüştürme yaptığımız olduğunu söylemiştik. Mesela bu metni utf-8 e dönüştürmek istersem İkinci parametreyi utf-8 olarak veririm. Son parametre ise dönüştürmenin hangi dilten gerçekleşeceğini temsil ediyor. ISO formatındaki bir metni utf-8 formatına dönüştürmek istiyorsam Bu şekilde komutumu yazabilirim.

<http-equiv="Content-Type" content="text/html; charset=utf-8">
<?php
echo mb_convert_encoding("Selam Arkadaş ĞüÜçÇiİşŞ","UTF-8","ISO-8859-9");
?>

İşte bu sayfayı tekrar gidip browserdan çağırdığımda Karşıma UTF-8 e dönüştüğü için garip görünen metin gelir. Şimdi bu metni tam tersini yapmak isteyip UTF-8 den ISO formatına dönüştürmek istiyor isembu ifadeyi kullanabilirim

<http-equiv="Content-Type" content="text/html; charset=utf-8">
<?php
echo mb_convert_encoding("Selam Arkadaş ĞüÜçÇiİşŞ","ISO-8859-9","UTF-8");
?>

İşte yine gördüğümüz gibi dönüştürme işlemi gerçekleştirildi.

Şimdi sayfamın page design ından UTF-8 e dönüştürüyorum Artık bu kaydeceğim sayfa UTF-8 olarak kaydedilecektir. Doğal olarak buraya yazdığım php kodu şu an utf-8 formatında İşte ben bu utf-8 formatını iso ya dönüştür dediğimde Ki şuan bulunan sayfamıon dil kodlaması iso formatında Ve sayfayı tekrar çağırdığımda Sorunsuz olduğunu görüyorum.

Tam ters kodlamayı düşünürsek burdaki ters işlemide yapabiliriz. Mesela sayfamın browser a gönderilen dil kodlamasını UTF-8 e çevirdim. Daha sonra burdaki ifadeleri ters çevirdim

Sonra design diyerek Page Properties den Title / Encoding i bu sefer ISO formatı yani Türkçe WINDOWS a çevirdim. Daha sonra sayfamı kaydedip tekrar koda gelip yapıştırdığımda Evet şu an sayfam iso formatında olduğu için buraya yazdığım ifade iso formatında olmuş oldu.Bunu sayfada gösterebilmek için utf-8 e dönüştürmem gerekiyor.

<http-equiv="Content-Type" content="text/html; charset=utf-8">
<?php
echo mb_convert_encoding("Selam Arkadaş ĞüÜçÇiİşŞ","UTF-8","ISO-8859-9");
?>

Dönüştürme işlemizi bu şekilde yapabiliriz.

echo mb_convert_encoding("Selam Arkadaş ĞüÜçÇiİşŞ","UTF-8","WIN-1254");

desteklemediği bir dili kullanmış olduk

Warning: mb_convert_encoding() [function.mb-convert-encoding]: Illegal character encoding specified in D:\htdocs\ders\mb_convert.php on line 2

echo mb_convert_encoding("Selam Arkadaş ĞüÜçÇiİşŞ","UTF-8","auto");

Bakalım Eğerki dil kodlamasını kendimiz seçemiyorsak mb convert encoding fonksiyonunun kendisinin seçmesi için üçüncü parametreyi auto olarak verebiliriz. Bize dil kodlamasını çözümleyemediğini uyarı olarak verdi ama Dönüştürme işleminide sorunsoz olarak başardı. Burda hata vermesini engellemek için ki uyarı aslında burda verdiği uyarıdır. Başına at işareti koyarak işlem yapabiliriz.

İşte bu şekilde parametrelerini girerek Dil kodlamarı arasında dönüştürme işlemini çok rahat bir şekilde mb_convert_encoding komutunu ile sağlayabiliriz.

Bizim bilmemiz gereken aradaki uyumu sağlamak. Eğerki bir metin bize nerden geliyorsa bunu üçüncü parametre olarak vermeli Kendi sayfamızın dil kodlaması ne ise bunu ikinci parametre olarak vermeliyiz.

Bizim sayfamızın dosya olarak dil kodlaması az önce bahsettiğim gibi burda title/Encoding ayarı ile değiştirmiş oluyoruz. Eğerki bu değiştirme işlemini phped ile yapmanız gerekiyorsa PhpED ile açıp burda yer alan dil kodlamasını değiştirerek aynı işlemi gerçekleştirebiliriz. Hemen şurda altta yer alan dil kodlaması O an kaydedilen sayfanın dil kodlamasını temsil eder. Şuan WINDOWS-1254 şeklinde dil kodlaması gerçekleşmiş durumda.

Burdan bu şekilde UTF seçerek dil kodlamamızı UTF ye dönüştürebiliriz. Yine burdan windows formatında Türkçe karakter setine dönmek istiyorsak ISO yu seçebiliriz.

echo mb_convert_encoding("Selam Arkadaş ĞüÜçÇiİşŞ","WINDOWS-1254","auto");

sayfayı Sayfayı çağırdığımızda eğerki desteklemediği bir dil kodlaması ile karşılaşırsak Bunu bize uyarı olarak verir. Burdaki parametreyi auto olarak kullanarak ise yine dil kodlamasını dönüştürebiliriz.

İşte burda her seferinde bunları hatırlamak yerine utf2tr mesela Yada function tr2utf şeklinde iki fonksiyon tanımlarsak tr den utf 8 e dönüşüm için bu şekilde bir fonksiyon tanımlayabilir. Tabi burda metin olarak bir ifade alacağız. ve sabit değer yerine burdaki metni kullanacağız. Ters dönüşüm işlemi için ise Utf den yien buraya bir metin paremetresi almak üzere dönüştürme işlemini gerçekleştirebiliriz.Bu şekilde hangi parametre hangi parametreydi düşünmek yerine fonksiyonları kullanarak dil kodlaması dönüştürme işlemini sorunsuz bir şekilde gerçekleştirebiliriz.


Sitenize Aşağıdaki kodlari ekleyerek videoyu izletebilirsiniz
Bu Sayfayı İmleyebilirsiniz : Bookmark and Share
Videoya Henüz Yorum Yazılmamış
İlgili Dosya Bulunmamaktadır
Adınız, Soyadınız
Mail
Telefon
Adres
Referans

Kullanıcı Girişi

Kullanıcı Adı :
Şifre :
Ücretsiz Üyelik Şifre Hatırlatma
Sitede bulunan Tüm dökümanların izinsiz kopyalanması yasaktır. ProgramlamaTv.com 2008
Hizmet Sözleşmesi - Gizlilik İlkesi