Jak převést q-encoding text do ISO-8859-2

Třeba: "Subject" z mailove zpravy, napr:

=?iso-8859-2?Q?Tonda_Pecl_p=ED=B9e_z_webu?=

Aby to rozumně fungovalo, je třeba podporovat ještě aspoň UTF-8 kódování. Mohu napsat v Perlu program, který to dekoduje, nebo můžeš použít něco hotového. Třeba Mail::Message::Field::Full.

Dokumentace, která se toho týká je na cpan a hledej slovo „decode“.

Triviální příklad užití:

veronika@eowin:~$ perl -e '
use Mail::Message::Field::Full;

print Mail::Message::Field::Full->decode(
   "jak? =?utf-8?B?c2U9bcOhxaE/?="
 ), "\n";'
jak? se=máš?

Pro pouřití něčeho hotového hovoří příklad

jak? =?utf-8?B?c2U9bcOhxaE/?=

který ukazuje, že info o kodování nemusí být na začátku.

Obecný princip interpretace kodu je takový, že dva hexa znaky za rovnítkem přečtu jako číslo z intervalu 0..255 a celou trojici =.. nahradím jediným znakem byte(..). Po té se podívám, jaká znaková sada byla použita a případně text převedu do té, v níž pracuji.

crfreenet: JakDekodovatQencoding (last edited 2009-05-24 18:21:31 by localhost)

[CRFreeNet] [Galerie] [CZFree.Net] [zen#blog]