Es begann alles ganz harmlos: Ich sollte mittels ColdFusion und der Fotolia API eine Bildsuche realisieren. Also hab ich mir die API angeschaut, eigentlich ganz easy.
Mittels ColdFusion wird ein HTTP Request abgesetzt und das Resultat verarbeitet. Auf die genau Vorgehensweise gehe ich hier nicht ein, das sprengt den Rahmen. Kurz gesagt: Ich sende einen XML Request an die API und erhalte einen XML Response, den ich mit einer CFC in ColdFusion Daten (Array/Structure) umwandel. Die xmlrpc.cfc findet man übrigens innerhalb des BlogCFC Pakets.
Und hier lag das Problem! Nach dem parsen durch die CFC waren alle Umlaute verhagelt. Also ging es an die Fehlersuche. Das Ergebnis lautet, xmlparse() ist schuld. Aber warum? Das wusste ich auch nicht, da es keinen Sinn ergab, schliesslich sind alle Daten UTF-8 kodiert.
Tests ergaben dann: Parse ich das zurückgelieferte XML direkt mit xmlparse(), gehen die Umlaute verloren. Speicher ich das XML mit cffile, lade es anschliessend erneut mit cffile mit encoding=utf-8 in eine Variable und parse dann die Variable ist alles in Butter. Aber das kann ja nicht Sinn der Übung sein. Und im Produktiv-Einsatz möchte ich auch nicht bei jedem Aufruf eine XML schreiben/lesen, das geht auf die Performance.
Also fragte ich Raymond Camden, den ColdFusion Jedi Master, um Hilfe. Nach mehreren Versuchen kam er zum gleichen Schluss wie ich auch: Ein Bug in xmlparse() es wohl ist.
Ich hatte mich bereits damit abgefunden und mich mit der cffile Lösung arrangiert. Bis ColdFusion 9 als Final Release erschien und ich meine Beta deinstallierte. Da fiel mir im ColdFusion Administrator unter "System Information" ein Setting auf:
Java File Encoding | Mac Roman
Eine kurze Suche bei Google führte zur Lösung: Unter "JAVA and JVM" gibt es ein Feld "JVM Arguments", welches schon diverse Argumente enthält. Dort fügt man "-Dfile.encoding=UTF-8" an und startet den Server neu. That's all, folks!
Recent Comments