Unicode farkında tarayıcıların çağında hala gerekli HTML varlıkları adlandırılır?

4 Cevap php

Ben son yıllarda PHP programlama bir sürü yaptım ve can sıkıcı beni tutan bir şey (emin olmak için, doğal olarak orada yok) Unicode ve baytlı dizeleri için zayıf destek. Örneğin, "htmlentities" PHP dünyasında çok kullanılan fonksiyon gibi görünüyor ve ben localizable her dize tutarak içine bir çaba koyduk zaman kesinlikle rahatsız edici bulundu, sadece mağaza UTF-8 senin veritabanında, sadece UTF teslim -8 web sayfaları vb Aniden, bir yere veritabanı ve tarayıcı arasındaki orada her bayt davranarak bu naif işlevi, bir karakter mi ve her şeyi karışıyor.

Ben sadece love sadece fonksiyonların bu tür dökümü olur, onlar tamamen gereksiz görünüyor. Is it still necessary these days to write 'ä' instead of 'ä'? En azından benim Firefox sürece uygun bir kodlama servis konum olarak bile tuhaf Asya glifleri görüntülemek için gayet mutlu görünüyor.

Update: daha kesin olmak gerekirse: ("<" için "<" gibi) anything else than displaying HTML tags için gerekli kuruluşlar adında Hazır

Update 2:

@ Konrad: Hiçbir adlı kişiler gerekli değildir, söylüyorsun?

@ Ross: bu tür konularda özgür benim mantık çıkışı tutmak için girilen olduğunda Ama kullanıcı girdileri için daha iyi olmaz mıydı? (- Bu değilse bu çıkış olmak, o olabilir ama girişi güvenilir sanitasyon mümkün olduğunu, tabii varsayarak?)

4 Cevap

"Gerçek" XHTML adlı kişiler (örneğin ile application/xhtml+xml, yerine daha sık kullanılan text/html uyumluluk modu dışında) önerilmez. Yanı sıra XML kendisi tanımlanan beşten (&lt;, &gt;, &amp;, &quot;, &apos;) hepsi kullandığınız belirli DocType bir DTD içinde tanımlanmış olması gerekir. Bu tarayıcı açıkça uzak belirli bir mesafede olduğunu DOCTYPE, destek anlamına gelir. Numaralı kişiler, diğer taraftan, tabii ki sadece sağ Unicode karakter almak için bir arama tablosu gerektirir.

Bütün bu günlerde varlıkları gerekip gerekmediğini gelince: hemen hemen herhangi bir modern tarayıcı UTF-8 desteklemek için bekleyebilirsiniz. Bu nedenle, sürece garanti gibi veritabanı, biçimlendirme ve web sunucusu tüm varlıkları hendek, bu hizmet için katılıyorum.

XHTML kullanıyorsanız, aslında adında varlıkları ([kaynak belirtilmeli]) kullanmak için değil önerilir. Bazı tarayıcılar (Firefox ...), XML (normalde yok ki) gibi, bu ayrıştırma zaman, böylece DTD dosyalarını okuma ve yok varlıkları idare edemiyoruz.

Başka türlü yapmak için hiçbir zorlayıcı nedenler varsa kodlaması olarak UTF-8 kullanmak için yine de en iyi uygulama olarak, bu sadece belgelerin yaratıcısı belgeleri işleyebilir değil sadece iyi bir editör ihtiyacı var demektir ama aynı zamanda girerek iyi bir yol sağlar dalgıçlar glifleri. En çok ihtiyaç duyulan Gliflerin "alt" tuşları ile ulaşılabilir ancak Windows bu özelliği yoktur çünkü OS X gerçekten bu sorun yok.


@ Konrad: Hiçbir adlı kişiler gerekli değildir, söylüyorsun?

Kesinlikle. Tabii, aptal kısıtlamalar vardır, sürece, örneğin UTF-8 vb boğulmamak legacy veritabanı sürücüleri

Safari bazı Glifleri değil, diğerleri ile ilgili sorunlar var gibi görünüyor, bu needed olmayabilir ama bunu yapmak için en iyisi, tabii ki, bu benim kendi gözlemlerine şey ama yedeklenen benim görüşüm değildir.

Sen unicode desteğine sahip olacak (ancak çok uzakta olduğunu) PHP 6 tadını çıkaracaksınız. Ben 5.3 alfa sürümü belki de biraz destek olduğunu düşünüyorum.

Ben kuralları varlıklar üzerinde ne tamamen emin değilim ama onları kullanmaya devam edeceğiz. Kullanıcı girişi şüpheli karakterleri değiştirmek için htmlentities() OIS Bir tanrı kullanımı. Örneğin, dönüştürme < &lt; ve> için için &gt; çoğu HTML patlatır güvenli olur (örneğin, <script ...>).