Jan Schulze: Meta-Tags HTML-encoden?

Hallo,

muss man die Inhalte von Meta-Tags HTML-encoden (z.B. ü=ü)? Ich konnte darüber nirgends eine klare Aussage finden.

Ich persönlich tippe auf nein. Begründung: Die HTML-Seite ist als ANSI- oder UTF-8-Text abgespeichert, die beide nationale Sonderzeichen beinhalten. Wenn ich einen "Sonderzeichen-Begriff" bei Google eingebe, dann entnehme ich dem Such-Sring, dass Google ihn auch als UTF-8-Text interpretiert. Beispiel: Die Suche nach "überlegen" führt zu folgendem Google-Suchstring in der Adressleiste: http://www.google.de/search?q=%C3%BCberlegen&ie=UTF-8&hl=de&meta=
Folglich werden zwei UTF-8-Strings verglichen und ein überlegen als Meta-Tag würde nicht gefunden werden.

Andererseits sieht man die Tags im Web doch häufig HTML-encoded, so z.B. auch bei SELFHTML (Stefan Münz).

Kann mir da jemand weiterhelfen???

Danke.

  1. Sup!

    Man muss in Links auch die & als & schreiben - von daher tippe ich auf "Ja". Steht aber auch im HTML-Standard, kostenlos erhaeltlich beim freundlichen W3C oder kostenpflichtig, aber in deutsch, im gut sortierten Buchhandel.

    Gruesse,

    Bio

    --
    Tötet DJ Ötzi! (Nicht wirklich!)
  2. Hallo,

    muss man die Inhalte von Meta-Tags HTML-encoden (z.B. ü=ü)? Ich konnte darüber nirgends eine klare Aussage finden.

    Es kommt ganz drauf an mit welcher Zeichensatzkodierung dein Dokument verarbeitet wird. Deutsche Umlaute sind (soweit mir bekannt) nur bei ISO-8859-1 erlaubt.
    Prinzipiell bestimmt die Zeichensatzkodierung, welche Zeichen in einem Dokument erlaubt sind, egal ob diese in Meta-Tags oder sonst wo stehen (außer Tag/Attributnamen).
    In UTF-8 werden Umlaute in 2 Byte umgewandelt (ein Zeichen kann in UTF-8 bis zu 4 Byte beanspruchen), dort haben Umlaute im Klartext nichts verloren.
    Um bei Deinem Beispiel zu bleiben; ein ü besteht in UTF-8 aus den beiden Bytes HEX(C3 BC).
    Folgende Möglichkeiten hast du nun:
    1. Du kodierst Dein Dokument in ISO-8859-1 und darfst das ü in Klartext schreiben.
    2. Bei UTF-8 musst Du HEX(C3 BC) schreiben.
    3. In beiden Fällen kannst Du auch das Entity ü benutzen.

    Entities sind unabhängig von der verwendeten Zeichensatzkodierung, da in [X]HTML spezifiziert (fest eingebaut).
    Einer Suchmaschine ist es egal welche der Möglichkeiten Du benutzt. Intern wandelt z.B. Google zuerst alles nach UTF-8 um und vergleicht dann. Deshalb ist dort ein ü in ISO-8859-1 das Selbe wie ein ü oder HEX(C3 BC) in UTF-8.

    Viele Grüße
    Thomas Mell

    http://www.validome.org

    1. Hallo

      In UTF-8 werden Umlaute in 2 Byte umgewandelt (ein Zeichen kann in UTF-8 bis zu 4 Byte beanspruchen), dort haben Umlaute im Klartext nichts verloren.

      Hä? Was hat das mit der variablen Bytezahl zu tun?

      Um bei Deinem Beispiel zu bleiben; ein ü besteht in UTF-8 aus den beiden Bytes HEX(C3 BC).
      Folgende Möglichkeiten hast du nun:

      1. Du kodierst Dein Dokument in ISO-8859-1 und darfst das ü in Klartext schreiben.
      2. Bei UTF-8 musst Du HEX(C3 BC) schreiben.
      3. In beiden Fällen kannst Du auch das Entity ü benutzen.

      4. Das Dokument im Texteditor als UTF-8 abpeichern.

      Ist das nicht die komfortabelste Methode?

      Gruß

      1. Hallo,

        Hä? Was hat das mit der variablen Bytezahl zu tun?

        Nichts, sollte nur eine kurze Erläuterung sein wie UTF-8 Umlaute codiert.

        1. Das Dokument im Texteditor als UTF-8 abpeichern.

        Ist das nicht die komfortabelste Methode?

        Richtig, mit UTF-8 kann man wohl so ziemlich alle Zeichensätze der Welt ersetzen (wenn ich das richtig verstanden habe). Das Dumme an der Sache ist nur, das nicht alle Browser UTF-8 beherrschen (vor allen Dingen ältere).

        Grüße
        Thomas Mell

  3. Hallo,

    muss man die Inhalte von Meta-Tags HTML-encoden (z.B. ü=ü)? Ich konnte darüber nirgends eine klare Aussage finden.

    Nein. Für meta-Elemente gilt dasselbe wie für andere CDATA-Attribute, darin können theoretisch und praktisch Umlaute ohne Maskierung vorkommen.

    Ich persönlich tippe auf nein. Begründung: Die HTML-Seite ist als ANSI- oder UTF-8-Text abgespeichert, die beide nationale Sonderzeichen beinhalten. Wenn ich einen "Sonderzeichen-Begriff" bei Google eingebe, dann entnehme ich dem Such-Sring, dass Google ihn auch als UTF-8-Text interpretiert.

    Was hat das zu bedeuten? Google kann die Suchbegriffe in vielen verschiedenen Kodierungen entgegennehmen. Zum Beispiel in ISO-8859-1, http://www.google.at/search?q=�berlegen&ie=iso-8859-1.

    Beispiel: Die Suche nach "überlegen" führt zu folgendem Google-Suchstring in der Adressleiste: http://www.google.de/search?q=überlegen&ie=UTF-8
    Folglich werden zwei UTF-8-Strings verglichen und ein überlegen als Meta-Tag würde nicht gefunden werden.

    Google rekodiert sowieso alle intern an dem Vergleich beteiligten Strings und gleicht deren Kodierung aneinander an, daher ist es egal, a) wie die GET-Daten (d.h. die Suchbegriffe in der URL) kodiert sind, b) welche Kodierung die Webseiten im Google-Index nutzen. Das heißt, wenn die Input-Encoding UTF-8 ist, findet man auch Dokumente, auf denen »überlegen« in ISO-8859-1 kodiert ist. Umgekehrt gilt dasselbe. Hinzu kommt, dass beim Indizieren eines Dokuments freilich alle numerischen Zeichenreferenzen und Entity-Referenzen wie ü aufgelöst werden. Das heißt, ein Dokument, das »überlegen« enthält, wird intern mit demselben Stichwort verknüpft wie ein Dokument, das »überlegen« in UTF-8 oder ISO-8859-1 oder anders kodiert enthält.
    Ich weiß nicht recht, worauf du hinauswillst. Suchmaschinen erledigen dies alles von selbst.

    Andererseits sieht man die Tags im Web doch häufig HTML-encoded, so z.B. auch bei SELFHTML (Stefan Münz).

    Das ist eine Konvention, die ihre Ursprung in bestimmten Browserfehlern hatte, die vor vielen Jahren akut waren. Heutzutage muss man nicht faktisches US-ASCII schreiben, sondern kann durchaus die 8-Bit-Zeichensätze bzw -Kodierungen ausschöpfen und Umlaute somit direkt ins Dokument (auch als Attributwerte) schreiben.

    Mathias