ajax UTF-8 ISO-8859-9 türkçe karakter problemi
İ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");
Not : 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.
Not : 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.
__________________ |