Neues Thema starten

Text encoding ändern

 Hallo Team,

ich hab hier ein Problem mit einem csv-File, das als 8859-1 ankommt. Ich will daraus ein UTF-8 machen. Ich weiß, daß das mit dem FileEncodingChanger-Step grundsätzlich funktioniert, aber das resultierende csv-File setzt falsche Zeilenumbrüche. Ich möchte jetzt nur wissen, ob es möglich ist, innerhalb eines Mappers das Umcodieren zu erledigen. Ich denke, daß das irgendwie über eine <#ftl...>-Anweisung gehen müßte, aber ich komme hier nicht zum Ergebnis. Ich hab's mal ganz primitiv so versucht:

SpalteA

<#ftl encoding="ISO-8859-1">(dann kommt hier ein entsprechend codierter Text rein)


SpalteB

<#ftl encoding="UTF-8">${result['SpalteA']}


Aber das Ergebnis ist dasselbe...bitte um Hilfestellung.


Gruß, Micha


Könntest du noch mal den IST und SOLL Zustand darlegen? 

Zeilenumbrüche und Encoding sind eigentlich unterschiedliche Dinge. 

Kannst du das Problem irgendwie sichtbar machen? (z.B. Hexeditor)


Heißt das, dass das Encoding mit dem FileEncodingChanger aber die Zeilenumbrüche danach nicht passen? Oder sind die Zeilenumbrüche davor auch schon so?

Noch eine Idee:

vielleicht im ersten Schritt mit FileFindAndReplace die Zeilenumbrüche anpassen (\r\n vs \n), und dann mit FileEncodingChanger das Encoding der Datei anpassen. .... oder umgekehrt...

Vielen Dank, ich hatte irgendwann dann auch den Eindruck, daß innerhalb des Mappers/des Excel-Files in der Description irgendwelche \r\n drinstehen müssen, und so war's auch. Nach der Bereinigung stimmten dann auch die Zeilennummern wieder. Allerdings hätte ich schon gern gewußt, ob das, was der FileEncodingChanger macht, also z.B. ein ISO-8859-1-File in ein UTF-8 umwandeln, auch direkt in einem Mapper geht, bezogen auf nur eine Spalte. Also:

Description

Vorher (ISO)

3M� Temflex� 1500 tape is a general-purpose...

Nachher (UTF-8)

3M™ Temflex™ 1500 tape is a general-purpose...


Gruß Micha

Nein der Mapper kann das nicht. Es ist technisch gesehen schon zu spät. Der Mapper arbeitet nicht mit Dateien und Bits und Bytes sondern mit Spreadsheet. D.h. z.B. der CSVReader davor ist der Step, wo man das Encoding einstellen kann und der die Bytes in der Datei entsprechend interpretiert.
Beim Schreiben von Dateien ist es auch nicht der Mapper, sondern der Step danach wie z.B. CSVWriter (auch dort kann man wieder Ziel-Encoding einstellen). 

Anmelden um einen Kommentar zu veröffentlichen