Encoding Windows <-> Linux
Axel
- xsl
0 Axel Hoogestraat0 Thomas J.S.0 Axel
0 MudGuard
Hallo,
ich habe ein Problem mit dem XML-Encoding bei einem XSL-Stylesheet.
Ich wandle ein XML-Dokument mit einem XSL-Stylesheet in HTML um. Das Ganz wird mit einem Java-Programm mit Saxon gemacht, also die HTML Dateien auf der Platte abgelegt und nicht "on the Fly" im Browser umgewandelt.
So, unter Windows habe ich keine Probleme. Jetzt habe ich das Ganze aber mal auf einen Linux-Rechner gebracht und bekomme die Codierung da nicht hin.
In der XSL habe ich:
<?xml version="1.0" encoding="UTF-8"?>
(...)
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="no" omit-xml-declaration="no" (... doctype etc. ...) />
Also überall UTF-8 angegeben.
In den HTML Seiten steht auch
<?xml version="1.0" encoding="UTF-8"?> und die Meta-Angabe mit UTF-8.
Wie gesagt unter Windows einwandfrei. Unter Linux habe ich ganz viele Sonderzeichen im HTML-Code (Sehe ich auch wenn ich den Quelltext anzeige)
Der Browser erkennt einfach nicht, dass es sich um UTF handelt und stellt die Seite als ISO dar. Wenn ich im Browser dann auf UTF umstelle, sieht alles wieder sauber aus. Bei den unter Windows generierten HTML-Seiten erkennt der Brower UTF automatisch.
Weiß jemand woran das liegen kann?
Vielen Dank im Voraus
Schöne Grüße
Axel
Hallo nochmal,
eine zusätzliche Information noch. Mein Ultraedit hatte übigens unter Windows die XSL-Dateien selbst auch als UTF codiert erkannt. Diese habe ich in ASCII konvertiert (auch mit Ultraedit) da ansonsten unter Linux selbst die XSL-Dateien nicht lesbar sind. Sind ein paar wenige merkwürdige Hyroglyphen am Anfang der Datei und der Transformer gibt nen Fehler. Vielleicht weiß ja alternativ jemand, wie ich die UTF-Codierten Dateien so ins Linux kriege (WinSCP), dass sie dort lesbar sind.
Vielen Dank im Voraus
schöne Grüße
Axel
Hallo,
Sind ein paar wenige merkwürdige Hyroglyphen am Anfang der Datei und der Transformer gibt nen Fehler.
Das hört sich nach BOM (Byte-Order Mark) an.
http://www.ultraedit.com/index.php?name=Forums&file=viewtopic&t=332&highlight=
Dazu auch sehr lesenwert: http://www.activevb.de/rubriken/kolumne/kol_20/unicode.html
Grüße
Thomas
Hallo,
Das hört sich nach BOM (Byte-Order Mark) an.
http://www.ultraedit.com/index.php?name=Forums&file=viewtopic&t=332&highlight=
vielen Dank für Deine Antwort. Mit diesem BOM hatte ich auch schon rumprobiert. Habe auch das Problem, dass Ultraedit den grundsätzlich mitschreibt (Wie auf der Eine in dem UE Forum).
Ich denk mittlerweile, dass eigentlich Problem ist, das mein Linux nicht auf UTF eingestellt ist. In meiner /etc/locale.gen war noch ISO eingetragen. Das habe ich auch geändert und mit locale-gen angewendet. Ich habe jedoch die Befürchtung, dass sich die Einstellung, die ich als Root mache, nicht auf den Webserver (der mittels PHP das JAVA-Programm für die Transformation startet *g*) auswirken.
Gebe ich "locale" auf der Konsole ein, ist alles auf UTF eingestellt. Lasse ich über PHP den Befehl "locale" ausführen und mir das Ergebnis im Browser darstellen, steht dort z.B.:
LC_NAME="C"
LC_NAME und irgendwas mit UTF. VIelleicht habe ich den Befehl aber auch falsch angewendet...
In meiner locale.gen steht de_DE.UTF-8@euro UTF-8
Vorhin stand bei dem Befehl locale auf der Konsole dann, wie gesagt LC_NAME = und irgendwas mit UTF: JETZT nach erneuten einloggen steht dort LC_NAME = "de_DE@euro"
Ich versteh gar nix mehr :-( Linux ist aber auch sehr neu für mich.
VIelleicht hat ja noch jemand einen Tip
Vielen, vielen Dank im Voraus
Schöne Grüße
Axel
Als Root auf der Konsole steht dort :
Schöne Grüße
Axel
Hi,
In den HTML Seiten steht auch
<?xml version="1.0" encoding="UTF-8"?> und die Meta-Angabe mit UTF-8.
Wie gesagt unter Windows einwandfrei. Unter Linux habe ich ganz viele Sonderzeichen im HTML-Code
Welches Encoding liefert der Webserver im HTTP-Header content-type?
cu,
Andreas