Standart olmayan karakterler için PHP filtre

6 Cevap php

Ben kullanıcı girişi gibi metin almak ve bir yerde metinde this gibi standart karakterler vardır.

Metin bir veritabanına kaydedilir. Her şey UTF-8 olduğunu ve iyi çalışıyor, sadece standart olmayan karakterler için garip işaretler görüntüler.

PHP nasıl bu karakterleri filtre edebilir?


Edit:

Ben yanlış karakterler ile metin "doğru" veritabanında saklanır olduğunu keşfetti. Metin statik UTF-8 kodlanmış HTML sayfasında gösterilecektir zaman, kırık karakterler gösterilir. Metin AJAX yüklendiğinde Ama çöker ve yükleme işlemi başarısız olur. Yani bu hala bir AJAX kodlama sorunu olduğunu düşünüyorum.

6 Cevap

Unicode (UTF-8 ve benzeri kodlamalar), tipik bir kullanıcı mümkün olan her karakter için ihtiyaç bulunmamaktadır çünkü çoğu işletim sistemleri, görüntüleyebilir yolu daha karakterler içeriyor.

Bu muhtemelen kullanıcıların biri onların sistemine sahip giriş karakter vardır, ama senin üzerinde yok demektir; UTF-8 bunu saklamak ihtiyacı sadece ne, ne görebilirsiniz umursamıyor. Birisi Paul Erdos (O üzerinde korkak bölü not) gibi bir Macar adı varsa, bir örnek olarak, bu karakter tüm sistemlerde mevcut olmayabilir.

Başka bir cevap dediği gibi Yani, bu semboller müşterileriniz gerçekten onları görüntülemeniz gerekiyorsa görmek için geliyor nerede izini gerekebilir, ya da başka bir şey için onları çevirmek gerekir.

Bu "tuhaf karakterler" yanlış karakter kodlaması (kullanıcı girişi UTF-8 kodlanmış değildir) ya da bu karakterleri temsil etmek için kullanılan yazı eksik gliflerinin gelen ya kaynaklanabilir.

Yani önce bu "garip karakterler" gerçek nedenini bulmak gerekir.

Ben UTF-8 karakterleri, kontrol dönüştürmek ve cendereye için PHP fonksiyonları bir dizi kullanın. Ben bu yüzden ne yazık ki uzun bir süre önce net bir yerden bu işlevleri var onlar için herhangi bir kredi alamaz, ancak onlar yardımcı umuyoruz.

PHP functions for converting characters around about UTF-8

Eğer varsa AJAX ne "tür" kullanın ve hangi kütüphane mi? Eğer görüntüleme veya div.innerHTML = myRequestetContent sadece basit dizeleri için XML dosyaları ya da HTML dosyaları yüklemek musunuz?

XML bildirimi (dolayısıyla yanlış karakter) hiçbir charset ve olmayan ve benzeri xml varlıkları kaçtı: XML kullanırsanız, o zaman burada farklı sorunlar yaşayabilirsiniz veya < veya> Bu XML geçersiz yapabilir ve bu nedenle AJAX fonksiyonlarını bozabilir.

Eski <?xml version="1.0" encoding="UTF-8"> gibi xml dosyasında bildiriminde, PHP htmlspecialcharacters tarafından ikincisine doğru karakter kodlamasını ekleyerek sabit olabilir.

Kesinlikle CDATA kullanarak bir XML biçimli sonucunda veri döndürme için AJAX yanıt sayfasını değiştirmeyi düşünmelisiniz. Sonra ben eve güvenli eminim.

Eğer CDATA ne olduğu konusunda emin değilseniz, o zaman burada bir göz atın: http://en.wikipedia.org/wiki/Cdata

http://php.net/xmlwriter_write_cdata: PHP'nin XMLWriter nesnesi kullanılarak örnekler için bu bir göz atın

Işlevini kullanın:

$htmlEntitiesString = htmlentities($inputString);

Bu 'A' @ dönüşüyor 'é' ya da buna benzer bir şey gibi sorunları alamadım sağlanması, HTML varlıkları içine é Ben ve benzeri gibi tüm karakterleri dönecek.