dedlfix: UTF-8 Turnaround mit XML- und XSL-Files

Beitrag lesen

echo $begrüßung;

  1. Genau welche Zeichen sollen bei einem GET-Request abgeschickt werden?

Daten, zuerst kodiert gemäß der von der Zeite verwendeten Zeichenkodierung, oder der vom Formular gewünschten (Attribut accept-charset). Anschließend sollten sie URL-kodiert werden.

  1. Genau welche Zeichenkette soll in einem XML zur Interpretation per XSL von der Datenbank zurück kommen?

Daten, kodiert gemäß der Angabe, die du in den entsprechenden Header-Zeilen gemacht hast. Ob sich für einzelne Bereiche andere Kodierungen angeben lassen, ist mir nicht bekannt.

Erklärung des ganzen: Nehmen wir das €-Zeichen, die UTF-8 Codierung hierfür lautet %E2%82%AC

Nein, das ist die URL-kodierte Darstellung eines UTF-8-kodierten Euro-Zeichens

zu 1) Wenn ich nun aus einem InputFeld ein €-Zeichen auslese und per GET-Request verschicken möchte, was soll dann genau in dem GET-Request stehen:

Wenn die Seite UTF-8-kodiert ist, und der HTTP-Header "Content-Type" utf-8 sagt, ersatzweise die gleichlautende Meta-Element-Angabe, dann

a) €
b) %E2%82%AC

b. ein URL-kodiertes UTF-8-kodiertes Euro-Zeichen.

c) %25E2%2582%25AC (Codierung der %-Zeichen)
d) ? (Ganz was anderes woran ich gar nicht denke)

zu 2) Ich bekomme aus der Datenbank in einem XML-File ein UTF-8 Zeichen, wie soll dieses aussehen:
a) <![CDATA[ € ]]>

a. vorausgesetzt, du schaust dir das mit einem Editor an, der das gemäß UTF-8 interpretiert. Wenn er auf ISO-8859-1 eingestellt ist, siehst du dagegen €

b) <![CDATA[ %E2%82%AC ]]>
c) <![CDATA[ %25E2%2582%25AC ]]> (Codierung der %-Zeichen)
d) <![CDATA[ ? ]]> (Ein Fragezeichen weil in XML-Files keine UTF-8 Zeichen dargestellt werden können)
e) ? (Ganz was anderes woran ich gar nicht denke)

Was habe ich bisher schon gemacht?

  1. XSL-Files beginnen mit <?xml version="1.0" encoding="UTF-8"?>
  2. XSL-Files enthalten: <xsl:output encoding="UTF-8" [....] />
  3. XSL-Files enthalten: <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> als Teil des HTML-Head-Tags

Damit hätte ich gedacht sage ich der Seite sie soll alles in UTF-8 Abschicken und alles empfangene als UTF-8 interpretieren.

Damit weist du (außer bei 2.) den Client an, alles als UTF-8 zu interpretieren. Ist die Kodierung tatsächlich eine andere, dann kann der Client die Daten nicht richtig interpretieren.

Im Moment ist es aber leider so, dass ein €-Zeichen als "%E2%82%AC" abgeschickt wird und auf der nächsten Seite werden drei einzene kryptische Zeichen dargestellt,

Wenn die so aussehen: € dann sind das die Byte-Werte eines UTF-8-kodierten Euro-Zeichens, aber als ISO-8859-1 interpretiert.

echo "$verabschiedung $name";