PHP AJAX Türkçe Karakter Sorunu ve Çözümü

Binbir takla atmıştım zamanında bu sorunu çözebilmek için. Her iki dosya da iso kodlanmışsa veya her iki dosya da utf8 se, bir türlü istediğim olmuyordu. Bu dediğim tabi 2006/2007 yıllarındaydı. O zmandan bu zamana yeni çözümler üretilmiş olabilir ama ben hep bu çözümü kullandım. Hem okuma, hem de yazma kısmında sorunum o zmandır yok.


Öncelikli sorunum, xhr(Xml HTTP Request) ile çektiğim bir sayfanın karakter setinin UTF8 olarak algılanmasıydı. htaccess dosyamı açtım ve içine

HTACCESS kodu
    AddDefaultCharset ISO-8859-9

yazdım ve ilk basamaktaki sorunu kesinlikle çözmüş oldum. Tekrarlayım, "ISO-8859-9" ile kodlanmış sayfalar kullanıyorsanız, bu htaccess kodu kesin çözümünüzdür.

Veri çekmekteki problemi çözdükten sonra, veri yazmada bir problem olduğunu farkettim. Ben her ne kadar karakter setini iso biçimine çevirsem de, bir formu ajax ile yolladığım da hala bozuk karakterlerle karşılaşıyordum. Bunun içinse şu kodu yazdım

PHP kodu
  1. function ajax_utf_temizle($dizi) {
  2. return is_array($dizi) ? array_map('ajax_utf_temizle', $dizi) : iconv("UTF-8","ISO-8859-9//TRANSLIT",$dizi);
  3. }
  4. $_GET = ajax_utf_temizle($_GET);
  5. $_POST = ajax_utf_temizle($_POST);
  6. $_REQUEST = ajax_utf_temizle($_REQUEST);

Bu üç global değişkeni UTF biçiminden ISO biçimine alarak sorunlarımı tamamıyle çözdüm. Eğer siz de formlarınızı ajaxForm gibi eklentileri kullanmak istiyorsanız, hedefteki dosyaya bu kodları eklemeniz yeterlidir.

Benim sorunlarımı her zaman çözdü, umarım okuyanlarınkini de çözer ;)

Yalnızca türkçe karakter için şu kodları da kullanabilrisiniz

PHP kodu
  1. function ajax_utf_temizle($dizi) {
  2. static $girenler=array('/Å'.chr(158).'/','/Å36/','/İ/','/ı/','/Ä'.chr(158).'/','/Ä36/','/Ã36/','/ü/','/Ã36/','/ö/','/Ã36/','/ç/');
  3. static $cikanlar=array('Ş','ş','İ','ı','Ğ','ğ','Ü','ü','Ö','ö','Ç','ç');
  4. return is_array($dizi) ? array_map('ajax_utf_temizle', $dizi) : preg_replace($girenler, $cikanlar, $dizi);
  5. }
  6. $_GET = ajax_utf_temizle($_GET);
  7. $_POST = ajax_utf_temizle($_POST);
  8. $_REQUEST = ajax_utf_temizle($_REQUEST);

PHP AJAX Türkçe Karakter Sorunu ve Çözümü Oy Sayısı: 20 Puan: 8.70/ 10.00

Etiketler

php ajax turkce karakter sorunu , ajax turkce karakter sorunu , ajax turkce karakter problemi , php ajax turkce karakter , ajax turkce karakter , php turkce karakter sorunu , ajax karakter sorunu , php ajax turkce karakter problemi , php ajax , php turkce karakter sorunu cozumu ,

Sinan17 Ekim 2009 Cumartesi 18:37:42


teşekkürler aynı şekilde kafayı yedim sağolasın.


Yusuf Okan31 Ocak 2011 Pazartesi 04:03:19


sevgili arkadaşım kod çok işime yaradı teşekkür ederim fakat bir yerde sıkıntı yaşıyorum.bu çevirme işlemi yapılan bir sayfada türkçe karakterler girildiğinde çevirme işlemi sonunda boşluk oluşuyor yani hiç bir şey vermiyor nedendir acaba?


Gündüz Can YILMAZ01 Şubat 2011 Salı 10:10:58


Yusuf bey üstteki kod için //TRANSLIT eklemesi yaptım yine çözüm olmazsa alttaki şeklini dener misiniz


Bahadlr29 Haziran 2011 Çarşamba 09:29:46


tam 12 saattir uraştım ve ölmek üzreydim ilk önce firefoxda calisti ie de calismadi daha sonra veri cekerken utf sorunu verdi belgeleri cevirdim daha sonra olmadi geri iso-8859-9 a cevirdim htacces içine o kodu baska yerden buldum en son veri eklerkenki sorunu google amca saolsun sizinle buluşturdu ve sorunum çözüldü yaşasın :D çok teşekkür ederim


Gündüz Can YILMAZ01 Temmuz 2011 Cuma 14:20:12


Problemi çözmenize çok sevindim


Murat19 Kasım 2011 Cumartesi 17:25:17


2 gündür uğraşıyordum , teşekkürler :)




Yorumunuz