Werden genannte Entitäten in HTML im Zeitalter von Unicode bewusst, dass Browser bewusst sind?

StackOverflow https://stackoverflow.com/questions/25132

Frage

Ich habe in den letzten Jahren eine Menge PHP -Programmierung gemacht und eine Sache, die mich immer wieder nervt, ist die schwache Unterstützung für Unicode- und Multibyte -Saiten (um sicher, dass es nativ keine gibt). Zum Beispiel scheint "HTMLentities" in der PHP-Welt eine vielgebrauchte Funktion zu sein, und ich fand es absolut ärgerlich, wenn Sie sich bemühen, jede String lokalisierbar zu halten, nur UTF-8 in Ihrer Datenbank zu speichern, nur UTF zu liefern -8 Webseiten usw. Plötzlich gibt es irgendwo zwischen Ihrer Datenbank und dem Browser diese hoffnungslos naive Funktion, die vorgibt, dass jedes Byte ein Charakter ist und alles durcheinander bringt.

Ich würde nur Liebe Um diese Art von Funktionen einfach abzuwerfen, scheinen sie völlig überflüssig zu sein. Ist es heutzutage noch notwendig, 'Ä' anstelle von 'Ä' zu schreiben? Zumindest scheint mein Firefox vollkommen glücklich zu sein, selbst die seltsamsten asiatischen Glyphen zu zeigen, solange sie in einer ordnungsgemäßen Kodierung serviert werden.

Aktualisieren: Genauer sein: werden als Entitäten bezeichnet, die für notwendig sind Alles andere als das Anzeigen von HTML -Tags (wie in "<" für "<")

Update 2:

@Konrad: Sagst du, nein, genannte Entitäten werden nicht benötigt?

@Ross: Aber wäre es nicht besser, die Benutzereingabe bei der Eingabe zu desinfizieren, um meine Ausgabe logisch von solchen Problemen frei zu halten? (Angenommen, diese zuverlässige Bereinigung der Eingabe ist möglich - aber, wenn dies nicht der Fall ist, kann es in der Ausgabe sein?)

War es hilfreich?

Lösung

Genannte Entitäten in "echtem" xhtml (dh mit application/xhtml+xml, eher als die häufiger verwendeten text/html Kompatibilitätsmodus) sind entmutigt. Abgesehen von den fünf definierten in XML selbst (&lt;, &gt;, &amp;, &quot;, &apos;), sie müssten alle im DTD des jeweiligen DocType definiert werden, den Sie verwenden. Das bedeutet, dass Ihr Browser diesen docType explizit unterstützen muss, was bei weitem nicht bestimmt ist. Nummerierte Entitäten hingegen erfordern offensichtlich nur eine Nachschlagtabelle, um den richtigen Unicode -Zeichen zu erhalten.

Ob Sie in diesen Tagen Entitäten benötigen: Sie können so ziemlich erwarten, dass ein moderner Browser UTF-8 unterstützt. Solange Sie garantieren können, dass die Datenbank, der Markup und der Webserver alle damit einverstanden sind, diese zu bedienen, lassen Sie die Entitäten auf.

Andere Tipps

Bei Verwendung von XHTML wird tatsächlich empfohlen, benannte Entitäten nicht zu verwenden ([Zitat erforderlich]). Einige Browser (Firefox…), wenn Sie dies als XML analysieren (was sie normalerweise nicht tun), lesen Sie die DTD -Dateien nicht und können die Entitäten nicht verarbeiten.

Da es ohnehin die beste Praxis ist, UTF-8 als Codierung zu verwenden, wenn es keine zwingenden Gründe gibt, bedeutet dies nur, dass der Schöpfer der Dokumente einen anständigen Editor benötigt, der nicht nur die Dokumente verarbeiten kann, sondern auch einen guten Eintrittsweg bietet die Taucherglyphen. OS X hat dieses Problem nicht wirklich, da die meisten erforderlichen Glyphen über "Alt" -Tasten erreicht werden können, aber Windows diese Funktion nicht hat.


@Konrad: Sagst du, nein, genannte Entitäten werden nicht benötigt?

Genau. Es sei denn natürlich, es gibt dumme Einschränkungen, z. B. Legacy-Datenbanktreiber, die auf UTF-8 usw. ersticken, usw.

Safari scheint Probleme mit einigen Glyphen zu haben, aber nicht mit anderen, es ist vielleicht nicht erforderlich Aber es ist wahrscheinlich am besten, dies zu tun, das ist natürlich meine Meinung und wird nicht durch meine eigenen Beobachtungen unterstützt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top