dedlfix: HTML-Entities

Beitrag lesen

Hi!

Die Vorgabe bei den Abarbeitung von URL-Parametern ist in beiden Browsern unterschiedlich.

Nein, das Verhalten bei in URLs nicht zulässigen Zeichen ist in den Browsern unterschiedlich.
Aber das schrieb ich ja schon, daß die URL nicht korrekt ist.

Im konkreten Fall liegt es weniger an der URL selbst, sondern an der nicht vorhandenen Angabe zur Zeichenkodierung des HTML-Dokuments. Zumindest konnte ich das Problem sehr gut nachvollziehen, und es war in beiden Browsern weg, als ich eine charset-Angabe hinzufügte. Die Unterschiede wirkten sich nicht nur auf die URL-Zeile des Browsers aus. Als ich in seinem Beispiel das Javascript-Window-Open durch einen einfachen Link ersetzte, zeigten sich und verschwanden die Unterschiede ebenso.

Dem Wert eine URL-Kodierung zukommen zu lassen löst anscheinend auch das Problem, weil dieser Vorgang von PHP stets auf gleiche Weise vorgenommen wird und kein browserindividuelles Raten dabei ist. Das Ergebnis ist dann eine ASCII-kompatible Zeichenfolge, die die Browser unberührt lassen. Nicht gelöst bleibt dadurch jedoch die höchstwahrscheinlich generell fehlende Angabe zur Zeichenkodierung.

Zu einer optimalen Lösung gehören also mindestens diese drei Schritte:

  • Entitys weglassen, weil sie wegen UTF-8 nicht benötigt werden (Ausnahmen: HTML-eigene Zeichen und besondere Whitespace-Zeichen (z.B.  , ­))
  • Zeichenkodierung der HTML-Dokumente in Richtung Browser mitteilen
  • URL-Daten kontextgerecht behandeln

Lo!