• 28-09-2012, 03:23:37
    #1
    Kimlik doğrulama veya yönetimden onay bekliyor.
    PHP 5.4.X Kullanıyorum Server'da Sorun şuki artık htmlspecialchars türkçe karakterlerde çalışmıyor.

    Hemen size göstereyim durumu:

    <?php 
    
    $deger = 'ama sana';  
    echo htmlspecialchars($deger); 
    
    ?>
    Üstteki kodlama sayfaya "ama sana" kelimelerini yazdırıyor sorun yok ama asıl sorun türkçe karakterlerde.


    <?php 
    
    $deger = 'ağaç';  
    echo htmlspecialchars($deger); 
    
    ?>
    yazdığımızda ise ekrana hiç bir şey basılmıyor, sayfa bomboş işlem yok, çünki işin içinde türkçe güzelim ğ ve ç karakterleri var, bu tüm türkçe karakterler için geçerli.

    PHP 5.4 sürümü kullanmış arkadaş varsa htmlspecialchars kullanıyormu, kullanmıyor mu, nasıl kullanıyor, htmlspecialchars yerine başka fonksiyon mu kullanıyor bilgi istiyorum, deneme yaptığım sürümler ise tam olarak 5.4.6 ve 5.4.7
  • 28-09-2012, 04:11:31
    #2
    Kimlik doğrulama veya yönetimden onay bekliyor.
    php 5.4ten itibaren varsayılan karakter kodlaması utf-8 oldu.. büyük ihtimalle yaşadığınız sorun bu yüzden.

    Alıntı
    encoding
    Defines encoding used in conversion. If omitted, the default value for this argument is ISO-8859-1 in versions of PHP prior to 5.4.0, and UTF-8 from PHP 5.4.0 onwards.
    htmlspecialchars($string, ENT_QUOTES, ISO-8859-1); şeklinde kullanırsanız sorun muhtemelen çözülecektir.
  • 28-09-2012, 11:33:56
    #3
    O şekilde nedense PHP nin verdiği başka bir hata var.

    Notice: Use of undefined constant ISO - assumed 'ISO' in .......\htdocs\asdfg\DENEME\test.php on line 25
    
    Warning: htmlspecialchars(): charset `-8860' not supported, assuming utf-8 in .........\htdocs\asdfg.com\DENEME\test.php on line 25
    charset `-8860' not supported derken acaba php.ini sayfasında bir takım değişiklikler ve bazı charsetlerin tanıtılması ? eklenmesi mi gerekli ?

    Evet sunucular ilerleyen zamanda yavaş yavaş PHP nin yeni versiyonlarına geçecekler ve çoğu kişide benzer sorunlar çıkacaktır.

    Konu güncel, htmlspecialchars ve türkçe karakterleri nasıl kullanabiliriz ?
  • 28-09-2012, 14:18:53
    #4
    <?php  
    $deger = 'ağaç';
    echo htmlspecialchars($deger,ENT_COMPAT,'ISO-8859-1');
    //Çıktı : ağaç
    ?>
  • 28-09-2012, 14:43:26
    #5
    bayGaReZ adlı üyeden alıntı: mesajı görüntüle
    <?php  
    $deger = 'ağaç';
    echo htmlspecialchars($deger,ENT_COMPAT,'ISO-8859-1');
    //Çıktı : ağaç
    ?>


    Teşekkür ederim, cidden bu çok işime yarayacağı gibi konuyu okuyanların aynı sorundan yakınanlarında faydalanacağı bir konu oldu.

    Size şunu sormak istiyorum arada kullanılan ENT_COMPAT hakkında, şöyle bir bilgi buldum:

    ENT_COMPAT Sadece çift tırnaklar dönüştürülür, tek tırnaklara dokunulmaz.
    ENT_QUOTES Çift tırnaklara ilaveten tek tırnaklar da dönüştürülür.

    Bu durumda acaba eskiden fonksiyona araya ne yapmasını söylemediğimiz o eski şeklinde varsayılan olarak üstteki seçeneklerden hangisini yapıyordu ? Hangisini kullanmak daha sağlıklı olur ?
  • 28-09-2012, 15:09:14
    #6
    Varsayılanı ENT_COMPAT, eğer isterseniz ENT_QUOTES ya da ENT_NOQUOTES gibi diğer seçenekleri de kullanabilirsiniz.