skripting-section:bash:utf8-converter

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
skripting-section:bash:utf8-converter [2017/09/04 13:39] – created michaelskripting-section:bash:utf8-converter [2017/09/11 13:58] (current) – [Löschen der *.backup files] michael
Line 1: Line 1:
 ====== ISO-8859 to UTF8 Converter ====== ====== ISO-8859 to UTF8 Converter ======
 Skript, welches vom mir erstellt wurde, um alte Bullnix Pages (Post-Wiki) automatisiert in das neue UTF-8 Fileformat zu konvertieren! //Dies ist besonders wichtig, weil ansonsten Sonderzeichen wie, "ä","ö","ü" etc.. nicht mehr korrekt dargestellt werden können!// Skript, welches vom mir erstellt wurde, um alte Bullnix Pages (Post-Wiki) automatisiert in das neue UTF-8 Fileformat zu konvertieren! //Dies ist besonders wichtig, weil ansonsten Sonderzeichen wie, "ä","ö","ü" etc.. nicht mehr korrekt dargestellt werden können!//
 +
 +<wrap em>Zu beachten: Das Skript, macht vor dem Konvertieren, jeweils ein Backup der original Dateien. *.backup! Falls es also Probleme gibt, enthalten jene Files den Inhalt der originalen Files!</wrap>
  
 ===== Skript Sourcecode ===== ===== Skript Sourcecode =====
Line 24: Line 26:
  
 </sxh> </sxh>
 +
 +----
 +
 +==== Fix für nicht konvertierte Inhalte der Dateien ====
 +
 +
 +Um zu überprüfen, ob die Konvertierung auch für alle Files erfolgreich durchgelaufen ist, kann folgender Promt gebraucht werden:
 +
 +<code># cd /data/webhome/bullnix-int.post.ch/pages/foswiki/data/
 +# find . -name "*.txt"  | while read F; do cat "$F"  | hexdump -C | cut -b11-60 |  egrep -q "(c4|d6|dc|e4|e7|e8|e9|ea|f4|fc|f6)"; if [ $? -eq 0 ]; then echo "$F : ISO";  fi; done</code>
 +
 +Falls dieser Befehl nun Fehler ausgibt, kann folgendes Skript verwendet werden um diese zu korrigieren.
 +
 +
 +''**Filename:** <wrap em>fix_convertig_errors.sh</wrap>''
 +
 +<sxh bash; first-line: 1>
 +#!/bin/bash
 +
 +cd /data/webhome/bullnix-int.post.ch/pages/foswiki/data/
 +
 +for file_to_fix in $( find . -name "*.*" ); do
 +
 +        #Detect ISO encodings in files via hexdump:
 +        cat "$file_to_fix"  | hexdump -C | cut -b11-60 |  egrep -q "(c4|d6|dc|e4|e7|e8|e9|ea|f4|fc|f6)";
 +        if [ $? -eq 0 ]; then
 +
 +                echo "$file_to_fix : ISO";
 +                iconv -f ISO-8859-15 -t UTF-8 "$file_to_fix" > temp_Convert.txt; cp temp_Convert.txt "$file_to_fix"
 +
 +                sed -ri 's/\\xFC/ü/g' "$file_to_fix"
 +                sed -ri 's/\\xE4/ä/g' "$file_to_fix"
 +                sed -ri 's/\\xF6/ö/g' "$file_to_fix"
 +
 +                sed -ri 's/\\xC4/Ä/g' "$file_to_fix"
 +                sed -ri 's/\\xDC/Ü/g' "$file_to_fix"
 +                sed -ri 's/\\xD6/Ö/g' "$file_to_fix"
 +
 +                sed -ri 's/\\1E9E/ẞ/g' "$file_to_fix"
 +                sed -ri 's/\\xDF/ß/g' "$file_to_fix"
 +
 +                sed -ri 's/\\xE9/é/g' "$file_to_fix"
 +                sed -ri 's/\\xE8/è/g' "$file_to_fix"
 +                sed -ri 's/\\xEA/ê/g' "$file_to_fix"
 +
 +                sed -ri 's/\\xE7/ç/g' "$file_to_fix"
 +                sed -ri 's/\\xC7/Ç/g' "$file_to_fix"
 +
 +                #iconv -f ISO-8859-15 -t UTF-8 $file_to_fix > temp_Convert.txt; cp temp_Convert.txt $file_to_fix
 +        fi;
 +done
 +
 +</sxh>
 +
 +----
 +
 +==== Unix Filenamen Korrektur ====
 +
 +<wrap hi>Werden Filenamen etwa so: **DruckerHinzuf▒gen.txt** und nicht so: **DruckerHinzufügen.txt**, müssen diese korrigiert werden!</wrap>
 +
 +Bei wenigen Dateien kann diese Umbenennung von Hand erfolgen. Was aber, wenn sehr viele Dateinamen zu korrigieren sind? Auch hier ist bereits ein geeignetes Linux-Utility vorhanden: ****convmv****. Mit dem Befehl
 +
 +
 +<code>
 +# convmv -f iso-8859-15 -t utf-8 --notest -r /data/webhome/bullnix-int.post.ch/pages/foswiki/data
 +</code>
 + 
 +
 +werden im angegeben Verzeichnis die ''**Dateinamen** vom Zeichensatz **ISO-8859-15** in den Zeichensatz **UTF-8** konvertiert''. Mit dem Schalter -r kann diese Aufgabe auch gleich für alle darunterliegenden Verzeichnisse ausgeführt werden. //Sollte das Utility nicht bereits auf dem Rechner installiert worden sein, kann es über yum mit dem Befehl: ''# yum install convmv'' installiert werden.//
 +
 +----
 +
 +==== Löschen der *.backup files ====
 +
 +<wrap em>Endgültiges löschen aller *.backup files aus allen Unterverzeichnissen!</wrap>
 +
 +<code># cd /data/webhome/bullnix-int.post.ch/pages/foswiki/data
 +# find . -name "*.backup"  | while read F; do echo $F; rm -f $F; done</code>
  • skripting-section/bash/utf8-converter.1504525157.txt.gz
  • Last modified: 2017/09/04 13:39
  • by michael