PHP, Javascript, Ajax, UTF-8, ISO-8859-9 (Türkçe) problemi

Yazan: Faruk Enes | Tarih 14 Mayıs 2006 | Yorum  5 Yorum
BerbatKötüOrtaGüzelHarika 2 kez puan verildi, Ortalama: 5 (5 üzerinden)
Loading ... Loading ...

Yaklaşık 20 saat tam gaz kodlama yapınca bir unicode sorunu gerçekten çözülmesi çok basit bir sorun gibi geliyor :)

İlk defa ajaxla uğraşan biri olarak Ajax’ın veri gönderme ve alma işlerini UTF-8 üzerinden yaptığını öğrenmiş oldum. Bunun çözümü ise oldukça basit.

Ajax ile veriyi gönderdiğinizde bunu veritabanına yollamadan önce, UTF-8′den ISO-8859-9′a çeviriyorsunuz. Bunun için ’nin mb_convert_string fonksiyonunu kullanıyorsunuz. Şöyle ki;

$myCol = mb_convert_encoding($myCol,"UTF-8","ISO-8859-9");

Veriyi bu şekilde veritabanına attıktan sonra veri sayfanın normal refresh’inde normal gözükecektir. Ama genelde biz bu veriyi belli bir div’e hemen yazmak isteriz. Ama bu veriyi ISO-8859-9′a çevirdiğimiz için bu sefer gene ???????? gibi gözükecektir. Bu sefer az önce yaptığımız işin tersini yaparız. Şöyle ki :

echo mb_convert_encoding($myCol,"ISO-8859-9","UTF-8");

Not0 : Veriyi sadece ajax ile göstermek istediğinizde çevrim yapmanıza gerek var. Onun haricinde sayfanızı normal bir şekilde yenilediğinizde kayıt normal şekilde gözükecektir, zira veriyi zaten ISO-8859-9 olarak veritabanına kaydettik.Not1 : Allah belanı versin Unicode!

Not2 : Ya tüm çarsetler tek kalemde unicode’a çevrilsin ya da unicode üzerine teknoloji, yöntem, vs inşa edilmesin. Hepsi unicode olsa da kurtulsak.

Not3 : mb_convert_encoding’i kullanmak için ’yi mbstring ile derleyin ya da .ini’den gerekli satırın başındaki noktalı virgülü kaldırın.

Yazdır Yazdır | 1,382 Görüntülenme | Kategori: PHP | Trackback  Geri İzleme
Etiketler  Etiketler: , , , ,

Benzer Yazılar


Yorum Yap


(gerekli)

(gerekli,yayınlanmaz)




XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>