deutsche Umlaute mit xmlParse() ausgeben
Es hat einige Mühen gekostet, aber manchmal ist die Lösung doch so einfach!
Hintergrund: in einem Kundeprojekt verwenden wir u.a. SubVersion und die SubVersion-Hooks. Wir ziehen mittels
<cfexecute name="svn.exe" arguments="log #repos# -r #rev# -v --xml" variable="result" timeout="30" />
eine XML-Struktur aus SubVersion, parsen sie (mit der xmlParse-Funktion!), um sie dann entsprechend weiterzuverarbeiten und z.B. die Dateinamen und Kommentare zu extrahieren. Es sind aber sämtliche Versuche fehlgeschlagen, die Umlaute aus den Kommentaren der XML-Struktur korrekt auszugeben. SubVersion das Encoding mitzuteilen hat genauso wenig genützt, wie die Server-Betriebssystemeinstellungen unter “Regional and Language Settings” anzupassen. Die SubVersion-Doku sagt, das die zurückgegebene XML-Struktur UTF-8 kodiert sein soll. Umlaute gab’s trotzdem nur verstümmelt, seltsamerweise aber nur beim XML-Result. Die SubVersion Log-Ausgabe als einfacher Text enthielt alle Umlaute in korrekt kodierter Form.
Nach einigem Probieren kam dann die Erleuchtung: das eigentlich Problem liegt bei der Funktion xmlParse() und den JVM-Einstellungen im Coldfusion Administrator. Unter “Server Settings” -> “Java and JVM” im Feld “JVM Arguments” muss der Schalter “Dfile.encoding” mit dem Wert “UTF-8″ hinzugefügt werden. Also
-Dfile.encoding=UTF-8
zu den JVM Argumenten hinzufügen, Service neustarten und fertig – deutsche Umlaute werden von der xmlParse-Funktion richtig kodiert!
Getestet mit Coldfusion 8 und Coldfusion 9.

Kommentare(0)


