Ich habe die Encoding-Versuche nun am echten-Script versucht vorzunehmen und erhalte ein anderes Ergebnis:
Das Encoding lässt sich per Hand auf utf-8 setzen, am Ende hat das Dokument auch noch utf-8 ($doc->getEncoding), geschrieben wird aber:
<?xml version="1.0" encoding="UTF-16" standalone="no" ?>
Beim Wiedereintritt werde ich angemeckert:
MESSAGE: Encoding (UTF-16, from XMLDecl or manually set) contradicts the auto-sensed encoding, ignoring it
OK, großzügiges Angebot, aber dann wieder
MESSAGE: Datatype error: Type:InvalidDatatypeValueException, Message:Value 'Gesch㥴skunde' is not in enumeration .
In meinem Schema steht: <?xml version="1.0" encoding="utf-8"?> .... <xs:element name="Kundenklasse"> xs:annotation xs:documentationPrivat- oder Geschäftskunde</xs:documentation> </xs:annotation> xs:simpleType <xs:restriction base="xs:string"> <xs:enumeration value="Privatkunde"/> <xs:enumeration value="Geschäftskunde"/> </xs:restriction> </xs:simpleType> </xs:element>
OK, klar, das ist nicht das selbe. Aber wie zum Geier bekommen ich es hin, dass der Geschäftskunde entsprechend geschreiben wird ?? Nebenbei steckt noch mein Name mit im XML:
im VI: <Name>Pürückherr</Name> In XML-SPY: <Name>P?err</Name> Der Parser meckert diesmal nich ;-)
Lese ich den Datensatz wieder, ein mache ich zur Kontrolle: print STDERR "Name: ". from_utf8({ -string =>$Adresse->name,-charset => 'ISO-8859-1' }) ."\n"; print STDERR "Name: ". $Adresse->name ."\n"; und erhalte: Name: Perr Name: Perr
Ist das nicht zum Heulen?
Ich könnte jetzt einfach das Encoding überall auf 8859-1 stellen und wäre die Sorgen los, aber utf-8 soll ja mitllerweile standard fpr xml sein, und ich weiss ja nicht, mit wem ich mal Files tauschen muss...
Mit freundlichen Grüßen
Jens Puruckherr