molily: Sonderzeichen in Ankernamen

Beitrag lesen

Hallo,

In Bezug auf http://de.selfhtml.org/html/verweise/projektintern.htm#anker, </archiv/2005/8/t113673/> und http://bugs.selfhtml.org/bug.php?op=show&bugid=928:

Ich frage mich gerade, wie man einen Anker und einen Hyperlink zu einem solchen notieren muss, wenn im Anker Zeichen außerhalb von ASCII vorkommen.
Ich hatte tatsächlich einiges nicht bedacht, aber nach meinen Tests bin ich so klug wie vorher.

Wahsaga hat mich auf http://www.w3.org/TR/html4/appendix/notes.html#non-ascii-chars hingewiesen. Dies empfiehlt eine UTF-8-Kodierung von solchen Zeichen innerhalb von URIs. Weiß jemand, ob das auch in irgendeinem URI-Standard so ausdrücklich vorgeschrieben wird?

Ich bin zunächst davon ausgegangen, das man einfach
  <a name="ö">..</a>
notieren kann (weil name CDATA ist usw., wie diskutiert) und dann mit
  <a href="#%C3%B6">..</a>
darauf verweisen kann.

Allerdings ist Mozilla Firefox der »einzige« Browser, der das versteht, Opera 8.02, MSIE 6 und Konqueror 3.4.2 finden den Anker nicht.

Nun besagt obige Quelle auch: »The same conversion based on UTF-8 should be applied to values of the name attribute for the A element.«

Ergo, wenn man
  <a href="#%C3%B6">..</a>
verwendet, sollte man äquivalent
  <a name="%C3%B6">..</a>
notieren.
Das verstehen alle genannten Browser, unabhängig von der Kodierung des Dokuments mit dem Anker und der Kodierung des Dokuments mit dem Link.

Das ist natürlich keine große Erkenntnis, schließlich taucht hier nirgendwo mehr ein »ö« auf, sondern letztlich nur ASCII-Zeichen, die der Browser problemlos miteinander abgleichen kann, ohne irgendwelche De- und Transkodierungen vornehmen zu müssen.

Ich lese daraus, dass besondere Zeichen in Ankernamen extrem umständlich sind - wer kann schon UTF-8-kodierte, Prozent-maskierte Zeichen lesen oder schreiben? - und dass die besagte »Faustregel« gerechtfertigt ist. Oder hat sich ein Denkfehler eingeschlichen?

Dann gäbe es noch die Möglichkeit der ISO-8859-1-Kodierung:
  <a name="ö">..</a>
  <a href="#%F6">..</a>

Opera und MSIE: Funktioniert weder in einem ISO-8859-1-kodierten, noch in einem UTF-8-kodierten Dokument. Auch nicht in Querlinks zwischen diesen.
Konqueror:
  Funktioniert innerhalb eines ISO-8859-1-kodierten Dokuments.
  Funktioniert von einem ISO-8859-1-kodierten Dokument in ein UTF-8-kodiertes Dokument.
  Funktioniert innerhalb eines UTF-8-kodierten Dokuments.
  Funktioniert von einem UTF-8-kodierten Dokument in ein ISO-8859-1-kodiertes Dokument.
Firefox:
  Funktioniert innerhalb eines ISO-8859-1-kodierten Dokuments.
  Funktioniert nicht von einem ISO-8859-1-kodierten Dokument in ein UTF-8-kodiertes Dokument.
  Funktioniert nicht innerhalb eines UTF-8-kodierten Dokuments.
  Funktioniert von einem UTF-8-kodierten Dokument in ein ISO-8859-1-kodiertes Dokument.

Ich frage mich, was ich in SELFHTML nun schreiben soll. Es geht unter anderem, ob name="ö" irgendeinen Sinn ergibt. MudGuard meinte, man müsste die Prozent-Maskierung anwenden, dann sind auch Links auf solche Anker korrekt (für name="bla#bla" und href="#bla%23bla" mag das ja gelten, ich habs nicht getestet, aber glaube es gerne). Ich weiß nicht, ob es dem theoretisch zuzustimmen ist - folgt denn irgendein oben genanntes Verhalten einem bestimmten Standard? -, auf jeden Fall ist es praktisch wenig zielführend.

Ich habe die neueste Version des Abschnitts »Wahl eines geeigneten Ankernamens« im Bugtracker gepostet. Hat jetzt noch jemand Ergänzungen?

Im Übrigen ist sowieso ziemliche Wichserei. Im Vergleich zu 8.0 steht künftig ein riesiger Haufen langweiliger und für Anfänger unverständlicher Theorie in dem Abschnitt. Vorher gab es nur eine verständliche Praxisempfehlung, die zugegebenermaßen eher empirisch und mit dem gesunden Menschenverstand als theoretisch begründet war. Jetzt gibt es nahezu haargenau dieselbe Empfehlung, dafür weniger verständlich und anhand von dutzenden Standards begründet. Naja, was tun wir nicht alles, um fachlich korrekt zu sein. ;)

Mathias