Nasıl set characterSet dışındaki tarayıcılar / PHP kolu karakter mi?

4 Cevap php

Ben karakter bir sayfa için ayarlanmış characterSet dışında olduğunu nasıl işlendiğini içine arıyorum.

Bu durumda sayfa iso-8859-1 olarak ayarlanır ve önceki programcı htmlentitiesi ($ string, ENT_COMPAT) kullanılarak giriş kaçmaya karar verilir. Bu daha sonra MySQL Latin1 tabloları içine saklanır.

As the table is set to the same character set as the page, I am wondering if that htmlentities step is needed. I did some experiments on http://floris.workingweb.nl/experiments/characters.php and it seems that for stuff inside Latin1 some characters are escaped, but for example with a Czech name they are not.

Bu karakterler Latin1 dışında, çünkü bu? Eğer öyleyse, yine de Latin1 dışında şeyler için yardımcı olmuyor gibi o htmlentities, çıkarılabilir ve Latin1 içinde için bildiğim kadarıyla şimdi gördüğünüz gibi gerekli değildir ...

4 Cevap

htmlentities sadece (get_html_translation_table(HTML_ENTITIES) tüm listesini verir) bilen ve olduğu gibi kalan bırakır karakterleri çevirir. Yani, doğru olmayan latin veriler için bunu kullanarak hiçbir mantıklı değilsin. Ayrıca, veritabanı girişlerinin html kodlama ve Latin1 kullanarak her iki ya da kötü fikirleri vardır, ve ikisinden de kurtulmak için öneririm.

Uyarı bir kelime: htmlentitiesi çıkardıktan sonra (), sen hala DB (mysql_escape_string veya benzeri) eklemek için gidiyoruz veri için tırnak kaçmak gerekir unutmayın.

O bir temel güvenlik önlemi olarak, yani o kullanılmış olabilir. ( de kaçtı olacak çünkü) girişine HTML / Javascript ekleme engellemek için.

Eğer Doğu ve Batı Avrupa dilleri desteklemek istiyorsanız btw ben varsayılan karakter kodlaması olarak UTF-8 kullanarak öneririm.

Yes
though not because Czech characters are outside of Latin1 but because they share the same places in the table. So, database take it as corresponding latin1 characters.

htmlentitiesi kullanarak her zaman kötü değildir. Farklı dilleri depolamak için tek uygun çözüm UTF-8 charset kullanmaktır.

O htmlentities / htmlspecialchars charset için (PHP 4.1.0 'dan beri) bir 3 parametre var dikkat edin. Örneğin bir UTF-8 dizesi bir 3. parametre olmadan htmlentitiesi uygularsanız, çıkış bozuk olacak şekilde ISO-8859-1 varsayılan.

Algılayabilir & edebilir mb_detect_encoding ile giriş dizesi dönüştürmek ve mb_convert_encoding giriş dizesi istenen charset maç emin olun.