PHP, Javascript, Ajax, UTF-8, ISO-8859-9 (Türkçe) problemi
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 PHP’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 PHP’yi mbstring ile derleyin ya da php.ini’den gerekli satırın başındaki noktalı virgülü kaldırın.
Yazdır
| 1,382 Görüntülenme | Kategori: PHP |
Geri İzleme
Etiketler: javascript, PHP, ajax, unicoe, türkçe problemleriBenzer Yazılar
Yorum Yap
XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

14 Mayıs 2006 |


