Himmel: Probleme mit ISO-8859-1

Hallo,

ich habe das Problem, dass das Programm fop Version 0.93 meine Kodierungen mit encoding="ISO-8859-1" nicht umsetzt in die deutschen Umlaute. Ich habe diese Kodierung in allen Dateien *xml, *.xsd, *.xsl eingefügt. Leider zeigt mir fop aber nur kryptische Sonderzeichen anstatt der richtigen deutschen Umlaute.

Jedoch habe ich festgestellt, dass die Evaluierungsversion des XSL-Formatter von Antenna House die deutschen Umlaute richtig anzeigt.
Kann es vielleicht sein, dass fop diese Kodierung nicht versteht?

Oder mache ich irgendetwas anderes falsch?

Hier z. B. der Kopf der *,xsl-Datei:

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">
 <xsl:template match="/">
  fo:root...

Gruß
Jürgen

  1. echo $begrüßung;

    ich habe das Problem, dass das Programm fop Version 0.93 meine Kodierungen mit encoding="ISO-8859-1" nicht umsetzt in die deutschen Umlaute. Ich habe diese Kodierung in allen Dateien *xml, *.xsd, *.xsl eingefügt.

    Kodierungen fügt man nicht ein, man verwendet sie. Wenn du die Kodierungsangabe einfügst, muss diese mit der tatsächlich verwendeten Kodierung übereinstimmen.

    Leider zeigt mir fop aber nur kryptische Sonderzeichen anstatt der richtigen deutschen Umlaute.

    Beobachte und beschreibe bitte genauer. "Kryptisch" kann alles mögliche sein. Wenn du genau sagst/zeigst, wie es aussieht kann man dir eventuell sogar sagen, was falsch gelaufen ist und auf die Ursache schließen.

    Kann es vielleicht sein, dass fop diese Kodierung nicht versteht?

    Das ist eher unwahrscheinlich.

    Oder mache ich irgendetwas anderes falsch?

    Meine Vermutung: Du verwendest als ISO-8859-1 deklariertes UTF-8.

    echo "$verabschiedung $name";

    1. Beobachte und beschreibe bitte genauer. "Kryptisch" kann alles mögliche sein. Wenn du genau sagst/zeigst, wie es aussieht kann man dir eventuell sogar sagen, was falsch gelaufen ist und auf die Ursache schließen.

      Es sind halt Zeichen wie das A mit einer Tilte darüber oder das 1/4-Zeichen und ähnliches.

      Meine Vermutung: Du verwendest als ISO-8859-1 deklariertes UTF-8.

      Ich habe sicher überall encoding "ISO-8859-1" eingetragen und es steht nirgends UTF-8. Ich habe alle drei Dateien nochmals überprüft. Oder ist das nicht ausreichend?

      Gruß
      Jürgen

      1. echo $begrüßung;

        Es sind halt Zeichen wie das A mit einer Tilte darüber oder das 1/4-Zeichen und ähnliches.

        Das hört sich nach UTF-8-Kodierung an. Solch eine Bytefolge ist ebenfalls gültiges ISO-8859-1.

        Wenn du dir nicht ganz sicher bist, den Text in der Kodierung ISO-8859-1 gespeichert zu haben, verwende einen Hexeditor, um dir die Bytes der Umlaute anzusehen, um so zu kontrollieren, dass sie auch der angegebenen Deklarierung entsprechen.

        UTF-8 ist die Standard-Kodierung für XML und Konsorten. Einige Progamme verlangen explizite Angaben, wenn du eine andere Kodierung verwendest oder arbeiten nur mit UTF-8. Oder sie verwenden als Eingangskodierung die angegebene und als Ausgabekodierung UTF-8, falls keine explizite Angabe erfolgte (so eine, wie von ThomasM vorgeschlagen). Du könntest in dieser Richtung weiterrecherchieren.

        Meine Vermutung: Du verwendest als ISO-8859-1 deklariertes UTF-8.
        Ich habe sicher überall encoding "ISO-8859-1" eingetragen und es steht nirgends UTF-8. Ich habe alle drei Dateien nochmals überprüft. Oder ist das nicht ausreichend?

        Es kommt nicht darauf an, was du deklarierst, sondern dass das, was du verwendest, mit der Deklaration übereinstimmt. Wenn du auf einen Briefumschlag mit 10 Euro drin "20 Euro" draufschreibst hast du deswegen noch lange keinen Verdoppler.

        echo "$verabschiedung $name";

  2. Hallo Jürgen,

    Hier z. B. der Kopf der *,xsl-Datei:

    <?xml version="1.0" encoding="ISO-8859-1"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">

    Gib die Kodierung der transformierten FO-Ausgabe hier explizit an:

    <xsl:output encoding="ISO-8859-1"/>

    <xsl:template match="/">
      fo:root...

    Grüße,
    Thomas

    1. Hallo Thomas,

      Gib die Kodierung der transformierten FO-Ausgabe hier explizit an:

      <xsl:output encoding="ISO-8859-1"/>

      <xsl:template match="/">
        fo:root...

      Das hat leider nicht funktioniert....

      Gruß
      Jürgen

      1. Hallo Jürgen,

        Das hat leider nicht funktioniert....

        Dann stimmt die Kodierung der Daten nicht (vermutlich benutzt Du UTF-8 -- dann gib das auch an). Oder speichere die Dokumente wirklich als ISO-8859-1.

        Ich habe gerade testweise eine PDF-Ausgabe mit FOP 0.93 unter Verwendung von ISO-8859-1 in allen beteiligten Dokumenten und unter Angabe von encoding bei xsl:output probiert. Ergebnis: Alle Umlaute sind problemlos lesbar.

        Grüße,
        Thomas

  3. ich habe das Problem, dass das Programm fop Version 0.93 meine Kodierungen mit encoding="ISO-8859-1" nicht umsetzt in die deutschen Umlaute. Ich habe diese Kodierung in allen Dateien *xml, *.xsd, *.xsl eingefügt. Leider zeigt mir fop aber nur kryptische Sonderzeichen anstatt der richtigen deutschen Umlaute.

    Jedoch habe ich festgestellt, dass die Evaluierungsversion des XSL-Formatter von Antenna House die deutschen Umlaute richtig anzeigt.
    Kann es vielleicht sein, dass fop diese Kodierung nicht versteht?

    Oder mache ich irgendetwas anderes falsch?

    Hier z. B. der Kopf der *,xsl-Datei:

    <?xml version="1.0" encoding="ISO-8859-1"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">
    <xsl:template match="/">
      fo:root...

    Ich habe irgendwie die Lösung gefunden und glaube es lag daran, dass der Notepad++ - Editor irgendetwas falsch abgespeichert hatte. Nachdem ich nämlich die XSL-Datei in XML-Spy geöffnet hatte, erhielt ich Fehlermeldungen bezüglich der Kodierung. Nachdem ich diese korrigierte lief es plötzlich alles ohne Probleme durch...

    Trotzdem danke für die Lösungsvorschläge.

    Gruß
    Jürgen