BirçoÄŸumuz ya kullanmışızdır, ya da gerçekten çok ihtiyaç duyup çözüm aramışızdır. BaÅŸka bir karakter setinde olan metni diÄŸer bir karakter setine geçirmek. Bunun için çok kolay bir yöntem var “iconv”.
iconv phpnin karekter setleri arasında çevrim yapmaya olanak veren yararlı bir fonksiyonu.
1 | string iconv(string $kodlamadan,string $kodlamaya,string $metin) |
biçiminde kullanılır. iconv kullanırken dikkat edilmesi ve göz önünde bulundurulurması gereken en önemli nokta, karakter kümesinin karşılığını bulamadığı karakterde ne yapacağını belirtmektir.
Şöyle ki : iconv çevrim yaparken diÄŸer karakter setinde bulamayacağı karakterler vardır ( örneÄŸin Türkçe de μ δ benzeri karakterler yoktur), bu tür karakterlere denk geldiÄŸinde ön tanımlı olarak bu karakterden sonrasını es geçer ve Notice verir. Bunun önüne geçebilmek için çevrim yapılması istenen karakter setini belirtirken “//TRANSLIT” kelimesinin eklememiz gerekir. Böylece o karakter setinde olmayan, ama karşılığı olan karaktere çevrilir .
PHP kendi sitesinde verdiği örnek üzerinden gidersek :
1 2 3 4 5 6 | $text = "'€' simgesi Euroya aittir"; echo 'Original : ', $text, PHP_EOL; echo 'TRANSLIT : ', iconv("UTF-8", "ISO-8859-1//TRANSLIT", $text), PHP_EOL; echo 'IGNORE : ', iconv("UTF-8", "ISO-8859-1//IGNORE", $text), PHP_EOL; echo 'Plain : ', iconv("UTF-8", "ISO-8859-1", $text), PHP_EOL; |
Çıktısı aşağıdaki gibi olacaktır
Original : ‘€’ simgesi Euroya aittir
TRANSLIT : ‘EUR’ simgesi Euroya aittir
IGNORE : ” simgesi Euroya aittir
Notice: iconv(): Detected an illegal character in input string in .\index.php on line 6
Plain : ‘
Notice: iconv(): Detected an illegal character in input string in .\index.php on line 7
iconv çok yararlı bir fonksiyondur, karakter setleri arasında çevrim yapmak istediğinizde işinizi oldukça kolaylaştıracak bir fonksiyondur.
Elimden geldiğince kullanımına dair birşeyler paylaşmak istedim. işinize yaraması umudu ile, hoşça kalın.
Yazı için teşekkürler. İşime yarayacağını düşünüyorum.
Rica ederim.
Merhab bu fonksiyon ile bir derdim var. yardımcı olabilirseniz çok sevinecem. Sitemde bi modül var rusça karakterlere uygun hazırlanmış. ancak türkçe karakterlerde problem çıkarıyor.
gerekli dosyalar altta. ilk dosyadaki bölümde sorun sanırım.
http://www.film-izleme.net/gerek.txt
http://www.film-izleme.net/hepsi.txt
Problemi anlamadım. Nedir yapmak isteyip de yapamadığınız. Verdiğiniz kodları ne yapmak istediğinizi anlamadığım için incelemedim.
Öncelikle teşekkürler. Yukarıda ki sitemin anasayfasına bakarsanız googledan gelen aramalar hangi sayfama hangi kelime ile geliyorsa bunu link yapıp anasayfada sağ alt bölüme link veren bi dosyanın kodları (seo için).yalnız sitemde sağ altta görebileceğiniz gibi türkçe karakterli aramalarda link kelimesi eksik çıkıyor. bende gereken php dosyasını http://www.film-izleme.net/hepsi.txt da gönderdim. iconv fonksiyonu ile olduğunu düşündüm. Türkçe karakter problemini giderebilirmisiniz zahmet olmazsa. Teşekkürler.
Sanırım yukarıda bahsettiğim //TRANSLIT kelimesini ekler iseniz probleminiz çözülecek. Buna yukarıda değinmiştim. Örneğe bakarak deneyin isterseniz.
Teşekkürler.Dediğinizi bir kaç farklı şekilde denedim olmadı.Teşekkürler zaman ayırdığınız için.
@iconv(“utf-8″, “windows-1251//TRANSLIT”, $request);
bu şekilde kullandım.türkçe karakterleri ingilizceye çevirdi. Oda iyi bir şey. teşekkürler tekrar.
$request = @iconv(“utf-8″, “windows-1251″, $request);
satırını şu şekilde değiştirin
$request = @iconv(“utf-8″, “ISO-8859-9//TRANSLIT”, $request);
Bu sorununuzu çözecektir.
onu denemiştim. bir daha denedim.hatayı size göndermek için.eğer düzelebilecek bir şeyse diye. verdiği hata şu.
Illegal mix of collations (cp1251_general_ci,IMPLICIT) and (latin5_turkish_ci,COERCIBLE) for operation ‘=’
Ama bu hata iconv den değil MySQL tablonuzun karakter setinden kaynaklanıyor.
Tablolarınızda latin5_turkish_ci yerine utf8_general_ci , sitenizin karakter setinde ise ISO-8859-9 yerine utf8 kullanırsanız problemleriniz çözülür.
Ayrıca iconv kullanmak zorunda da kalmazsınız.
Teşekkürler tekrar.onu yapmak çok zor olacakır benim için.İyi çalışmalar vaktinizi aldım.
güzel bir anlatım olmuş. teşekkürler..
teşekkürler sayesinizde 2 gündür aradığım kodu buldum.
hacı manueli türkçeye çevirmişsin. çöp blog. :\
Siz daha iyisini yapın, biz sizi takip edelim.