You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

162 lines
4.8 KiB

= Memtext FileConverter
0.9.1 7.5.2024
:toc:
== Übersicht
Der Memtext FileConverter ist für Konvertierung und Kontrolle insbesondere von ISO-codierten Dateien nach UTF8 gedacht.
Bei der Konvertierung werden störende Kontrollzeichen entfernt.
vergleiche http://www.unicode.org/reports/tr44/#General_Category_Values oder https://www.compart.com/en/unicode/category
(Kategorie C)
Wenn das Zielencoding UTF8 ist, wird zudem noch einmal überprüft, ob alle Zeichen gültig in UTF8 sind.
Die angegebenen Dateien werden automatisch ersetzt bzw. überschrieben durch das Zielkodierungsformat.
Wenn diese aufwändig zu erzeugen waren, erstellen Sie vor der Konvertierung ein backup oder nutzen Sie den Modus "dry-run" bzw. "safe-run".
Wichtig: Es kann sein, dass in der Quelldatei selbst keine Kontrollzeichen enthalten sind, diese erst künstlich generiert werden, wenn die Datei mit dem falschen InputEncoding eingelesen wird - vergleiche hierzu den LogLevel Debug.
== Voraussetzung
Es wird eine Java JRE mind. Version 11 erwartet.
Wenn
----
java -version
----
eine ältere Version anzeigt, können Sie aber für das Script eine Umgebungsvariable setzen, die auf ein Verzeichnis mit einer JRE11 oder höher zeigt.
z.B.
----
export MEMTEXTFC_JRE=/usr/lib/jvm/java-11-openjdk-amd64
----
== Quickstart
Eine einzelne ISO-kodierte Datei nach UTF8 konvertieren:
----
memtextfileconverting.x -f /pfad/zur/Datei
----
Alle *.unl-Dateien in einem Verzeichnis (inkl. untergeordneter Verzeichnisse) konvertieren
----
memtextfileconverting.x -d /pfad
----
== Optionen und Modi
=== Datei oder Verzeichnis
Man kan entweder eine einzelne Datei zur Konvertierung angeben oder ein ganzes Verzeichnis, dass dann sogar *rekursiv* durchsucht wird.
Für eine einzelne Datei geben Sie an
----
memtextfileconverting.x -f /pfad/zur/Datei
----
oder für ein Verzeichnis
----
memtextfileconverting.x -d /pfad
----
Wenn Sie ein Verzeichnis angeben, wird per Default nach .unl-Dateien in allen Unterverzeichnissen davon gesucht.
Wenn Sie andere Dateien verarbeiten möchten, können Sie ein Wildcard angeben, z.B.
----
memtextfileconverting.x -d /pfad -w *.csv
----
oder
----
memtextfileconverting.x -d /pfad --wildcard *.csv
----
=== Dry-run
Man kann die Konvertierung auch nur testen, ohne das die Datei geschrieben wird.
Dazu geben Sie die Option -n bzw. --dry-run an
----
memtextfileconverting.x -n -f /pfad/zur/Datei
----
oder
----
memtextfileconverting.x --dry-run -f /pfad/zur/Datei
----
=== Safe-Mode
Bei Fehlern wird die Originaldatei mit der Endung .orig beibehalten. Also z.B. test.unl wird als test.unl.orig beibehalten.
Geben Sie dazu den Parameter -s oder --safe-mode
----
memtextfileconverting.x -f /pfad/zur/Datei -s
----
oder
----
memtextfileconverting.x -f /pfad/zur/Datei --safe-mode
----
=== Tabs-to-Spaces
Wenn Sie diese Option wählen werden Tabulatorzeichen durch *ein* Leerzeichen ersetzt.
----
memtextfileconverting.x -f /pfad/zur/Datei -t
----
oder
----
memtextfileconverting.x -f /pfad/zur/Datei --tabs-to-spaces
----
=== Input- und Outputkodierung
Der Standardfall ist, dass ISO-kodierte Dateien nach UTF8 konvertiert werden sollen.
Als Defaultinputencoding wird nicht ISO-8859-1 sondern ISO-8859-15 genommen, da in 15 auch das Euro-Zeichen enthalten ist.
Wenn die Quelldateien nicht ISO-kodiert sind, können Sie eine andere INputCodierung angeben mit der Option -ie bzw. --input-encoding
z.B.
----
memtextfileconverting.x -f /pfad/zur/Datei -ie Windows-1252
----
oder
----
memtextfileconverting.x -f /pfad/zur/Datei --input-encoding Windows-1252
----
Falls das Ausgabeformat nicht UTF-8 sein soll, können Sie es auch mit der Option -oe oder --output-encoding angeben.
z.B.
----
memtextfileconverting.x -f /pfad/zur/Datei -oe Windows-1252
----
oder
----
memtextfileconverting.x -f /pfad/zur/Datei --output-encoding Windows-1252
----
== Logging
Beim Logging werden drei Level unterschieden: debug, info (default) und severe
Angabe z.B. mit
----
memtextfileconverting.x -l debug -f /pfad/zur/Datei
----
*debug*
Hier werden die meisten Informationen ausgegeben, wenn nach dem Einlesen einer Quelldatei Kontrollzeichen gefunden werden, wird dies in eigener eigenen Datei protokolliert, z.B. für test.unl in test.unl_problems.txt.
Wichtig: Es kann sein, dass in der Quelldatei selbst keine Kontrollzeichen enthalten sind, diese erst künstlich generiert werden, wenn die Datei mit dem falschen InputEncoding eingelesen wird.
Es wird auch das Ergebnis eines "EncodingDetektors" ausgegeben. Dies kann nicht immer 100% korrekt sein, aber wenn Sie z.B. die Ausgabe erhalten
----
Automatisch ermitteltes Encoding von /home/xxx/pbv_SPA.unl : WINDOWS-1252
----
kann dies ein Hinweis darauf sein, dass die Quelldatei Windows und nicht ISO-kodiert ist.
*info* (default)
Hier werden nur die wichtigsten Informationen ausgegeben.
*severe*
Nur bei Laufzeitfehlern des Programm selbst erfolgt eine Ausgabe