[linux-l] quoted printable dekodieren

Boris Kirkorowicz borisbelug at kirk.de
Do Jul 8 09:13:26 CEST 2021


Hallo,

Am 08.07.21 um 01:39 schrieb Frank Reker via linux-l:
> Am Mi 07. Jul 2021 15:40 +0200 schrieb Ralph Angenendt via linux-l:
> 
>> echo "=C3=84lles m=C3=ABt =C3=9Cml=C3=A4=C3=BCten" | python -m quopri -d
> 
> oder mit recode:
> echo "=C3=84lles m=C3=ABt =C3=9Cml=C3=A4=C3=BCten" | recode utf-8/quoted-printable..utf-8

das habe ich sogleich auch noch ausprobiert, stoße damit jedoch auf ein
Problem. Auf der Kommandozeile funktioniert es, auch in der Sequenz

> line='=C3=84lles m=C3=ABt =C3=9Cml=C3=A4=C3=BCten'
> newline=$(echo $line | recode utf-8/quoted-printable..utf-8)
> echo $newline

Aber in meinem Script erzeugt es die Fehlermeldung
> recode: Ungültige Eingabe bei Schritt »Quoted-Printable..data«

In der resultieren Datei findet sich kein einziger Umlaut, dafür etliche
leere Zeilen. Vermutlich werden Zeilen, die dekodiert einen Umlaut
enthalten, einfach leer ausgegeben. Das ist für mich umso erstaunlicher,
da die Ausführung des Beispiels auf der Kommandozeile funktioniert.

Irgendeine Idee dazu?

Ach ja, der Kern meines Scriptes liest sich so:

> cat $file | while read line
> do
> 	# newline=$(php -r 'echo quoted_printable_decode("'"$line"'")."\n";')
> 	# newline=$(echo $line | python -m quopri -d)
> 	newline=$(echo $line | recode utf-8/quoted-printable..utf-8)
> 	echo $newline >> $outfile
> done

Am Rande: das Script mit benötigt mit recode 3 Minuten, 3 Sekunden.



-- 
Mit freundlichem Gruß                                 Best regards
                                 Kirkorowicz


Mehr Informationen über die Mailingliste linux-l