Kaptam egy egyszerűnek tűnő feladatot. Ck. 200 email -ből (dovecot IMAP) kellene táblázatot csinálni. Az első oszlop a dátum a második a subject (tárgy). Mi sem egyszerűbb gondoltam én, de nem tudok rájönni mi ez a kódolás és hogy tudom dekódolni:
Subject: =?ISO-8859-1?Q?Sz=E9kesfeh=E9rv=E1r?= 2. (Krumpli)
Tárgy valójában: Székesfehérvár 2. (Krumpli)
Próbáltam iconv -al és munpack -sl, base64 -el de semmi nem tudtam kinyerni a "Székesfehérvár 2. (Krumpli)" szöveget.
Próbáltam csak egy részével "Sz=E9kesfeh=E9rv=E1r?= 2. (Krumpli)".
Mit nézek be? Mit lehet ehhez használni?
MEGKERÜLTEM
A roundcube listát kinyomtattam pdf -be, copy egy szöveges fájlba, majd néml harccal beemeltem libreoffice calc -ba. Nem lett tökéletes a karakter készltek miatt (utf8) de elfogadták :)
Hozzászólások
Esetleg:
https://tools.ietf.org/html/rfc2047
mime? A base64 erre nem jó?
Mivel lehet ezt kidekódolni?
* Én egy indián vagyok. Minden indián hazudik.
Pedig a munpack elvben jo lenne erre, reszlet a man-jabol:
“
Én is így gondoltam, de ezt kapom:
"Did not find anything to unpack from"
* Én egy indián vagyok. Minden indián hazudik.
Nem értek hozzá, de érdekelnek a problémamegoldások.
Ezzel esetleg nem vagy előrébb: https://cs.stanford.edu/people/miles/iso8859.html ?
Reference
Valahogy nem tudom elhinni hogy ehhez is programot kell írni.
* Én egy indián vagyok. Minden indián hazudik.
kb. 4-5 sorosat.
Hűha! Majdnem tökéletes. Köszönöm!
echo "Sz=E9kesfeh=E9rv=E1r?= 2. (Krumpli)" | reco
de "qp..data.ISO-885-1..$(locale charset)"
Székesfehérvár?recode: Invalid input in step `Quoted-Printable..data'
Ha kiveszem belőle a "?" akor már lekezeli :)
A leírás nekem eléggézavaros (a "manual" semmi olyat nem látok amit te készítettél.
Gyomláljam (valahogy) ki a "?" jeleket, vagy tudsz még valami opciót?
(Én megpróbálok rájönni erre a furcsa parancs formátumra)
* Én egy indián vagyok. Minden indián hazudik.
Fentebb linkelték az RFC2047-et, abban részletesen le van írva, de a lényeg a következő:
An "encoded-word" is a sequence of printable ASCII characters that begins with "=?", ends with "?=", and has two "?"s in between. It specifies a character set and an encoding method, and also includes the original text encoded as graphic ASCII characters, according to the rules for that encoding method.
Nehezítésképpen egy mező (pl. Subject) több soros is lehet, és ahogy nálad is, váltakozhat benne a kódolt és kódolatlan szöveg. Valamikor nagyon régen írtam egy awk szkriptet, ami szépen lekezel minden lehetőséget, most megosztom veled:
Demo egy valódi levéllel:
Nagyon köszönöm!
Átrágom magam rajta.
Tudom, hogy elküldték az RFC -t de az sem mai csirke, így még mindig úgy hiszem biztos van rá kész megoldás (pl. láttam php és perl scripteket). Valójában az ilyen scriptekben az a megbecsülendő, hogy ki van próbálva, működik. Ráadásul nem túl gyakori feladvány egy-egy embernél.
Mentem, lopom!
* Én egy indián vagyok. Minden indián hazudik.
formail -c -X "subject" < mail_file| perl -e 'use open qw(:std :utf8); use Encode qw(decode); while (my $line = <STDIN>) { print decode("MIME-Header", $line); }'
Esetleg Python3 ?
>>> from email.header import decode_header
>>> d = decode_header('=?iso-8859-1?q?p=E9lda?=')
>>> d[0][0].decode(d[0][1])
'példa'
>>> d = decode_header('Subject: =?ISO-8859-1?Q?Sz=E9kesfeh=E9rv=E1r?= 2. (Krumpli)')
>>> d
[(b'Subject: ', None), (b'Sz\xe9kesfeh\xe9rv\xe1r', 'iso-8859-1'), (b' 2. (Krumpli)', None)]
>>> print (d[0][0].decode(), d[1][0].decode(d[1][1]), d[2][0].decode())
Subject: Székesfehérvár 2. (Krumpli)
Perl játszik? :)
követem Poleszt
perl -MEncode -pe '$_=decode("MIME-Header",$_)'
No igen, Perl-ben mindent _is_ meg lehet írni. (Amit meg nem, azt meg lehet írni C-ben...)
Jó, de nem perlben írsz azt el is lehet olvasni legközelebb ;)
A Perl-ben irt dolgokat is, csak gyakorolni kell.
Blog | @hron84
via @snq-