Lude: Kodierungen von Deutschen Umlauten und '&', '<' und '>'

Hi,

ich wandele fuer HTML wie folgt um:
 $FilterObjekt =~ s/ä/ä/g;
 $FilterObjekt =~ s/ö/ö/g;
 $FilterObjekt =~ s/ü/ü/g;
 $FilterObjekt =~ s/Ä/&Auml;/g;
 $FilterObjekt =~ s/Ö/&Ouml;/g;
 $FilterObjekt =~ s/Ü/&Uuml;/g;
 $FilterObjekt =~ s/ß/ß/g;
fuer XML moechte ich, damit der Validator nicht meckert u.a. auch das kaufmaennische Und umwandeln:

$FilterObjekt =~ s/&/&/g;

Wandele ich mit Perl so wie im ersten Block beschrieben um, "funzt" es in der Browseranzeige. Aber wenn ich dann "fuer XML" das kaufmaennische Und umwandeln moechte, dann "funzt" es beim XML-Validator(XMLSpy), aber die Anzeige im Browser "schaltet" von 'ü' auf '&Uuml;' um.

Augezeichnet ist das Dokument mit:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

Was tun?

Gruss,
Lude

  1. Hi,

    ich wandele fuer HTML wie folgt um:
    $FilterObjekt =~ s/ä/ä/g;
    $FilterObjekt =~ s/ö/ö/g;
    $FilterObjekt =~ s/ü/ü/g;
    $FilterObjekt =~ s/Ä/&Auml;/g;
    $FilterObjekt =~ s/Ö/&Ouml;/g;
    $FilterObjekt =~ s/Ü/&Uuml;/g;
    $FilterObjekt =~ s/ß/ß/g;
    fuer XML moechte ich, damit der Validator nicht meckert u.a. auch das kaufmaennische Und umwandeln:

    $FilterObjekt =~ s/&/&/g;

    Wandele ich mit Perl so wie im ersten Block beschrieben um, "funzt" es in der Browseranzeige. Aber wenn ich dann "fuer XML" das kaufmaennische Und umwandeln moechte, dann "funzt" es beim XML-Validator(XMLSpy), aber die Anzeige im Browser "schaltet" von 'ü' auf '&Uuml;' um.

    Die Reihenfolge ist entscheidend! ZUERST die & umwandeln. Danach die anderen Zeichen.

    Hast Du eigentlich die Entities für die Umlaute in Deiner DTD/Schema für XML definiert? Die sind bei XML nämlich nicht standardmäßig vorhanden...

    cu,
    Andreas

    --
    Der Optimist: Das Glas  ist halbvoll.  - Der Pessimist: Das Glas ist halbleer. - Der Ingenieur: Das Glas ist doppelt so groß wie nötig.
    http://mud-guard.de/? http://www.andreas-waechter.de/
    1. Hi,

      Die Reihenfolge ist entscheidend! ZUERST die & umwandeln. Danach die anderen Zeichen.

      danke; sollte mal wieder einen Intelligenztest machen.

      Hast Du eigentlich die Entities für die Umlaute in Deiner DTD/Schema für XML definiert? Die sind bei XML nämlich nicht standardmäßig vorhanden...

      Der Validator scheint durch die Umlaute dank der Auszeichnung '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">' zu kennen, bzw. meckert jedenfalls nicht. Oder meinst Du etwas anderes?

      Gruss,
      Lude

      1. Hi,

        Hast Du eigentlich die Entities für die Umlaute in Deiner DTD/Schema für XML definiert? Die sind bei XML nämlich nicht standardmäßig vorhanden...
        Der Validator scheint durch die Umlaute dank der Auszeichnung '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">' zu kennen, bzw. meckert jedenfalls nicht. Oder meinst Du etwas anderes?

        Ok, wenn Du XHTML benutzt, sind die Umlaute definiert. Bei XML allgemein jedoch nicht.
        Ich hatte den doctype am Ende Deines ersten Postings überlesen - und weiter oben war immer nur von XML die Rede...

        XHTML ist zwar auch XML, aber nicht umgekehrt

        cu,
        Andreas

        --
        Der Optimist: Das Glas  ist halbvoll.  - Der Pessimist: Das Glas ist halbleer. - Der Ingenieur: Das Glas ist doppelt so groß wie nötig.
        http://mud-guard.de/? http://www.andreas-waechter.de/
  2. Holladiewaldfee,

    Wandele ich mit Perl so wie im ersten Block beschrieben um, "funzt" es in der Browseranzeige. Aber wenn ich dann "fuer XML" das kaufmaennische Und umwandeln moechte, dann "funzt" es beim XML-Validator(XMLSpy), aber die Anzeige im Browser "schaltet" von 'ü' auf '&Uuml;' um.

    Und das ist auch gut so ;-)
    Denn am Ende steht da: &Uuml;
    Im ersten Schritt wandelst Du das "Ü" in "&Uuml;" um. Dann aber kommt die zweite Umwandlung, da wird aus dem "&" ein "&" und damit aus "&Uuml;" ein "&Uuml;". Das ist syntaktisch korrekt, deswegen meckert der Vali auch nicht. Und der Browser stellt es korrekt als &Uuml; da.

    Die Lösung für Dein Problem: Erst das "&" umwandeln, dann das "ü".

    Ciao,

    Harry

    --
      Hä? Was? Signatur?! Kann man das essen?
      Wirrwarr: sh:| fo:) ch:] rl:° br:& n4:° ie:% mo:) va:) de:[ zu:) fl:( ss:) ls:[ js:|