Problem mit Zeichenkodierungen
Take
- programmiertechnik
Moin,
habe mal wieder ein Problem, das Thema ist eigentlich XML _und_ Perl, naja, Programmiertechnik tuts auch.
Ich bin dabei, auf meiner Seite oben ein Feld einzubauen, wo zufällige Sprüche erscheinen. Diese stehen in einer XML-Datei. Jetzt gibt es ein Perl-Script, welches per XML::Parser aus dieser XML-Datei die Sprüche einliest. Die Ausgabe des Scripts ist hier zu finden. Später wird dieses dann per SSI in die Startseite eingebunden. Alle Dateien sind als UTF-8 kodiert. In der XML-Datei auftauchende Umlaute werden jetzt aber als ISO-8859-1 ausgegeben! Wenn die Umlaute direkt in der Perl-Datei stehen (print "ää";
) kommen sie richtig an. Jemand eine Idee, woran das liegen könnte?
Gruß,
Take
Wenn die Umlaute direkt in der Perl-Datei stehen (
print "ää";
) kommen sie richtig an. Jemand eine Idee, woran das liegen könnte?
Die Perl Datei ist nicht in utf-8 abgespeichert.
Struppi.
Moin,
Wenn die Umlaute direkt in der Perl-Datei stehen (
print "ää";
) kommen sie richtig an. Jemand eine Idee, woran das liegen könnte?Die Perl Datei ist nicht in utf-8 abgespeichert.
Eben doch.
Wenn nicht, würden ja die Umlaute, die direkt im Perl-Script stehen, (die letzen 3 "Ä"s) verstümmelt und nicht die, die aus der XML-Datei kommen.
Struppi.
Gruß,
Take
hi,
Die Perl Datei ist nicht in utf-8 abgespeichert.
dachte ich auch.
Eben doch.
Dann gehe mal systematisch vor, lass das Perl-Script einmal nur den print "AAA" ausgeben und ein andermal das XML-Geparste.
Hotti
Moin,
hi,
Die Perl Datei ist nicht in utf-8 abgespeichert.
dachte ich auch.
Eben doch.
Dann gehe mal systematisch vor, lass das Perl-Script einmal nur den print "AAA" ausgeben und ein andermal das XML-Geparste.
Nur XML: immernoch verstümmelt.
Nur print "ÄÄÄ": nicht verstümmelt.
Es liegt daran, dass XML::Parser die Daten falsch zurückgibt, aber warum?!?
Hotti
Gruß,
Take
hi,
Es liegt daran, dass XML::Parser die Daten falsch zurückgibt, aber warum?!?
Parst der byte-weise oder zeichenweise? Probier mal:
use utf8;
Hotti
Moin,
hi,
Es liegt daran, dass XML::Parser die Daten falsch zurückgibt, aber warum?!?
Parst der byte-weise oder zeichenweise?
_So_ viel Ahnung hab ich nun auch nicht...
Probier mal:
use utf8;
Bring nix.
use Encode; kenn ich besser, ich machs jetzt also so:
encode($sprueche[$num]);
Gefällt mir zwar nicht besonders, tut aber seinen Dienst.
Dankeschön, hast mich auf den richtigen Pfad gebracht.
Hotti
Gruß,
Take
P.S.: Deine passwortgeschützte Seite zu verlinken bring nicht sehr viel ;)
hi,
Dankeschön, hast mich auf den richtigen Pfad gebracht.
jow, guck nochmal in das Modul rein. Da gibts z.B. ein Schlüsselwort für das Parserobjekt: ProtocolEncoding
P.S.: Deine passwortgeschützte Seite zu verlinken bring nicht sehr viel ;)
Doch: mein Index in den Suchmaschinen bleibt solange erhalten, bis ich wieder richtig Zeit habe, alles neu aufzubauen.
Hotti
Moin,
habs jetzt gelöst: das XML-File brauchte ein BOM, damit der Parser weiß, dass es UTF-8 ist, das encoding in der xml-Deklaration ignoriert er. Was ein blöder Fehler...
Gruß,
Take
@@Take:
nuqneH
habs jetzt gelöst: das XML-File brauchte ein BOM, damit der Parser weiß, dass es UTF-8 ist, das encoding in der xml-Deklaration ignoriert er. Was ein blöder Fehler...
Nicht deiner, sondern der des Parsers.
Qapla'
habs jetzt gelöst: das XML-File brauchte ein BOM, damit der Parser weiß, dass es UTF-8 ist, das encoding in der xml-Deklaration ignoriert er. Was ein blöder Fehler...
Hmm? Ich hab mal dein Beispiel nachgebaut und kann das Problem jetzt nachvollziehen. Aber bei mir ändert auch eine BOM nichts an dem Verhalten.
XML::Parser gibt immer ISO Zeichen weiter, egal wo und wie ich die Kodierung angebe. Das kann doch nicht sein?
In allen Dokus und Artikeln, die ich gefunden habe, steht, dass das Modul per Default alles als utf-8 ausgibt. Was bei mir definitiv nicht der Fall ist
Struppi.