12 Stimmen

Was ist der Unterschied zwischen UTF-8 und HTML-Entities?

Was ist der Unterschied zwischen UTF-8 und HTML-Entities?

5voto

Jon W Punkte 14908

UTF-8 ist ein Kodierungsschema für die Kodierung auf Byte-Ebene.

HTML-Entitäten bieten eine Möglichkeit, viele Zeichen im Standardzeichenraum (normalerweise ASCII) auszudrücken. Es macht sie auch besser lesbar lesbar, wenn UTF-8 nicht verfügbar ist.

Der Hauptzweck von HTML-Elementen besteht heute darin, dafür zu sorgen, dass Text, der wie HTML aussieht, als Text gerendert wird. Zum Beispiel können die Operatoren Kleiner als oder Größer als ( &lt; o &gt; ) in einer bestimmten Reihenfolge (z. B. <text>) können versehentlich als HTML dargestellt werden, obwohl sie eigentlich als Text dargestellt werden sollten.

5voto

Zorf Punkte 5860

Sehen Sie UTF-8 eher als ein Mittel, um verlustfrei und selbstsynchronisierend eine Liste natürlicher Zahlen auf einen Bytestream abzubilden, so dass Sie die natürlichen Zahlen zurückbekommen (verlustfrei) und wenn Sie einfach "in die Mitte" des Streams fallen, ist das kein großes Problem. (selbst-synchronisierend)

Jede natürliche Zahl stellt zufällig ein "Zeichen" dar.

HTML-Entitäten sind eine Möglichkeit, dieselben natürlichen Zahlen in einer Art und Weise darzustellen wie: &#127; steht für die natürliche Zahl 127, in Unicode ist das die DEL Charakter.

In UTF-8 ist das der Bytestream: 0111 1111

Sobald Sie über 127 hinausgehen, wird es mehr als ein Oktett, also wird 128: 1000 0001 1111 1111 .

Zwei DEL Zeichen in einer Reihe werden 0111 1111 0111 1111 . UTF-8 ist so konzipiert, dass es immer möglich ist, die ursprüngliche Liste der "Unicode-Skalarwerte" aus dem Bytestream abzurufen, auch wenn ein Bytestream von z. B. 4 Oktetten auf 1 bis 4 verschiedene solcher Skalarwerte zurückgeführt werden kann. UTF-8 ist also eine "variable Länge", wie sie es nennen.

4voto

deceze Punkte 489288

Das "A", das Sie hier auf dem Bildschirm sehen, ist im Computer nicht wirklich als "A" gespeichert, sondern als eine Folge von 1en und 0en. A Zeichensatz o Kodierung gibt eine Möglichkeit an, Zeichen auf diese Weise zu kodieren. Die ASCII-Zeichensatz enthält nur eine Handvoll Zeichen, die es kodieren kann, und zwar fast ausschließlich Zeichen der englischen Sprache. Aus historischen Gründen und aufgrund der technischen Beschränkungen der damaligen Zeit war dies der Zeichensatz des Internets (schon sehr früh).

Sowohl UTF-8- als auch HTML-Entities können verwendet werden, um Zeichen zu kodieren, die nicht Teil von ASCII sind. HTML-Entities erreichen dies, indem sie speziellen Zeichensequenzen eine besondere Bedeutung zuweisen. Damit können Sie Zeichen kodieren, die nicht durch ASCII abgedeckt sind, indem Sie nur ASCII-Zeichen verwenden. UTF-8 (Unicode) tut dasselbe, indem es einfach den Zeichensatz erweitert, um mehr Zeichen aufzunehmen. HTML-Entities sind nur in einer Umgebung "gültig", in der man sich die Mühe macht, sie zu dekodieren, was normalerweise ein Browser ist. UTF-8-Zeichen sind in jeder Anwendung, die diesen Zeichensatz unterstützt, universell einsetzbar.

Text, der nur durch ASCII abgedeckte Zeichen enthält:

Price: $20 (UTF-8)
Price: $20 (ASCII mit HTML-Elementen)

Text, der europäische Zeichen enthält, die nicht durch ASCII abgedeckt sind:

Beträge: 20€ (UTF-8)
Betr&auml;ge: 20&euro; (ASCII mit HTML-Elementen)

Text, der asiatische Zeichen enthält, die mit Sicherheit nicht von ASCII abgedeckt werden:

(UTF-8)
&#x5024;&#x6BB5;&#xFF1A;&#x4E8C;&#x5343;&#x5186; (ASCII mit HTML-Elementen)

Das Problem mit UTF-8 ist, dass der Client UTF-8 verstehen muss. Seit etwa zehn Jahren ist dies jedoch kein Problem mehr, da alle modernen Computer und Browser UTF-8 problemlos verstehen. UTF-8 (Unicode) kann praktisch alle Zeichen kodieren, die heute auf diesem Planeten verwendet werden (mit kleinen Ausnahmen). Mit dieser Kodierung können Sie mit Text "wie er ist" arbeiten. Es sollte unbedingt die bevorzugte Kodierung zum Speichern von Text sein.

Das Problem bei HTML-Entities ist, dass normale Zeichen eine besondere Bedeutung erhalten. Beim Schreiben von &auml; nimmt es die besondere Bedeutung von "ä" an. Wenn Sie tatsächlich beabsichtigen, "ä" zu schreiben, müssen Sie die Sequenz doppelt kodieren als &amp;auml; .
HTML-Entities sind außerdem notorisch unleserlich. Sie sollten nicht verwendet werden, um "besondere" Zeichen in normalem Text zu kodieren. In dieser Eigenschaft sind sie ein Flickwerk, das auf einen unzureichenden Zeichensatz aufgesetzt wurde. Verwenden Sie stattdessen Unicode.

Die wichtigste Verwendung von HTML-Entities, die unabhängig vom verwendeten Zeichensatz ist, ist die Trennung von HTML-Markup und Text. Auch HTML verleiht speziellen Zeichenfolgen eine besondere Bedeutung. <b>text</b> ist eine normale Zeichenfolge, die jedoch für HTML-Parser eine besondere Bedeutung hat. Wenn Sie beabsichtigen, einfach "<b>Text</b>" zu schreiben, müssen Sie ihn kodieren als &lt;b&gt;text&lt;/b&gt; damit der HTML-Parser sie nicht mit HTML-Tags verwechselt.

2voto

Yann Ramin Punkte 32375

Eine Tonne. HTML-Entities sind in erster Linie dazu gedacht, HTML-Markup zu entkommen, damit es in HTML angezeigt werden kann (nicht Anzeige und Ausgabe verwechseln). Zum Beispiel, &gt; gibt ein > aus, während > ein Tag schließt. Mit HTML-Entities kann man zwar vollen Unicode erzeugen, aber das ist sehr ineffizient und geradezu hässlich.

UTF-8 ist eine Multi-Byte-Kodierung für Unicode, die es ermöglicht, Zeichen außerhalb der klassischen US-ASCII-Codepage darzustellen, ohne die Codepage zu wechseln und zu versuchen, Codepages zu mischen. Ein einzelner Codepunkt (man kann ihn sich als Zeichen vorstellen, obwohl das nicht ganz korrekt ist) kann aus 6 Byte Daten bestehen. Er dient zur Darstellung aller Zeichen innerhalb und außerhalb der mehrsprachigen Basisebene (BMP), wie z. B. akzentuierte Zeichen, ostasiatische Zeichen sowie die keltische Baumschrift (Ogham) und andere Zeichensätze.

0voto

Lotus Notes Punkte 6166

UTF-8 ist eine Kodierung, htmlentities ist eine Funktion, mit der Benutzereingaben sicher auf der Seite angezeigt werden können, so dass HTML-Tags nicht direkt zum Markup hinzugefügt werden. Siehe die Handbuch .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X