[Allegro] Suche, Unicode und Internet-Explorer

Thomas Berger ThB at Gymel.com
Fr Mai 15 16:32:58 CEST 2015


Lieber Herr Maus

Am 15.05.2015 um 15:49 schrieb David Maus:

> Im Browsermenü unter "Ansicht" die Zeichenkodierung auf
> "Westeuropäisch (ISO)" (IE) bzw. "Mitteleuropäsch (Windows)" (FF)
> 
> 3.
> 
> Müller in in das Suchfeld schreiben
> 
> 4.
> 
> Formular durch Druck von Enter abschicken.
> 
> Das Ergebnis ist
> 
>   http://www.biblio.tu-bs.de/db/katalog/page.php?urG=ALL&urS=M%FCller
> 
> Hier wird das "ü" als Latin1 kodiert.
> 
> Es sollte hinreichend sein, dem <form>-Element ein Attribute
> accept-charset mitzugeben, in dem utf-8 als akzeptierte
> Zeichenkodierung aufgeführt ist.
> 
> <form name="opac" action="page.php" method="get" accept-charset="utf-8">
> ...
> </form>
> 
> Wenn ich auf der besagten Seite den Quelltext entsprechend ändere und
> das Formular abschicke, dann wird das ü richtig als %C3%BC kodiert
> übertragen.
> 
> Vielleicht hilft das ja in den betreffenden Fällen?

vielleicht. Es ist allerdings so, dass die Seite
< http://www.biblio.tu-bs.de/db/katalog/ >
per HTTP-Header explizit uebermittelt, dass sie UTF-8-codiert ist. Sie
koennen Ihren Browser also nur /nachtraeglich/ dazu verleiten, sie als
Latin1 codiert zu betrachten, eine "heimliche" Einstellung auf
"Westeuropaeisch" scheint mir in dieser Konstellation wenig plausibel.

Die DTD der Seite ist leider eine nicht bekannte, aber angenommen,
sie koennte auf HTML 4.01 korrigiert werden, dann gilt:

>>>
This attribute specifies the list of character encodings for input data that is
accepted by the server processing this form. The value is a space- and/or
comma-delimited list of charset values. The client must interpret this list as
an exclusive-or list, i.e., the server is able to accept any single character
encoding per entity received.

The default value for this attribute is the reserved string "UNKNOWN". User
agents may interpret this value as the character encoding that was used to
transmit the document containing this FORM element.
<<<

allerdings ist das m.E. eher fuer POST requests gedacht, die Spezifikation
merkt an:

Note. The "get" method restricts form data set values to ASCII characters. Only
the "post" method (with enctype="multipart/form-data") is specified to cover the
entire [ISO10646] character set.

Das kann man so interpretieren, als sei das Verhalten voellig beliebig (im
Gegensatz zu "geregelt"), wenn es um die Uebermittlung von Umlauten in
GET-Requests geht. Der Standard ist allerdings von 1999. Andererseits ist
ein nicht-ASCII-"ü" in einem Request nicht erlaubt und aktuelle URL-Standards
erlauben auch kein %FC ...

Irgendwo muessen die Browser sich uebrigens entscheiden, ob sie den Request
als HTTP 0.9, 1.0 oder 1.1 absetzen: Je nach Version liegen andere
Standards bezueglich "URL" zugrunde, im Orignal-RFC 1738 von 1994 wird
z.B. noch ganz banal byteweise codiert, Unicode war damals noch kein
Thema...

Also: Mein Verdacht ist eher dass die unangemessene DTD-Deklaration der
Seite diese (manchmal) in eine unangemessen fruehe Kompatibilitaet drueckt
(IE 5 quirks?), vielleicht sollte man da erst einmal herumreparieren, damit
die Seite nicht 110 Errors beim validieren generiert. Korrekt sollte sein:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
            "http://www.w3.org/TR/html4/loose.dtd">

(ich weiss nicht, ob das Problem der von index.php generierten Seite die
Kleinschreibung oder der fehlende system identifier ist).

viele Gruesse
Thomas Berger




Mehr Informationen über die Mailingliste Allegro