Thread MIME::Parser: Kodierung der Umlaute von E-Mail-Attachments falsch (13 answers)
Opened by guvvuser at 2011-07-11 13:35

rosti
 2011-09-13 20:15
#152353 #152353
User since
2011-03-19
3412 articles
BenutzerIn
[Homepage]
user image
Von v5.8 auf 5.14 wurde die Unicode bzw. utf-8-Unterstützung weiterentwickelt. Dh., es wird immer mehr getrennt zwischen Byte- und Zeichenorientierung.

Lt. neuer Definition ist ein Character-String nun nicht mehr eine Byte-Sequenz. Was leider schlecht dokumentiert ist, sind die APIs der angrenzenden Module, also was die erwarten: Oktetten oder Zeichenketten.

Zum Verständnis: Ein print auf STDOUT oder ein Dateihandle muss Oktetten (Bytes) ausgeben. Perl-Intern hast Du jedoch evntl. nicht Oktetten, sondern einen Character-String, der an eine bestimmte Kodierung gebunden und damit auch geflaggt ist.

Es gibt das Modul Encode.pm, was zwischen Oktetten und Character-Strings vermitteln kann, hierzu bitte mal einlesen. Ebenso in die Dokumentation der von Dir verwendeten Module, vielleicht stehts ja doch irgendwo.

Noch ein Beispiel: URI::Escape::uri_escape($str) erwartete bisher Oktetten womit das Percent-Encoding stimmt. Neu ist uri_escape_utf8 für getaggte Zeichenketten.

Neben Encode.pm gibt es noch die Möglichkeit, den IOLayer auf eine bestimmte Kodierung zu schalten.

Du wirst bei Deinem Code selbst schauen müssen, an welcher Stelle Du Oktetten hast oder Zeichenketten und was von Beiden die Module erwarten. Möglicherweise hilft auch die Probiermethode ;-)

Viel Erfolg!

View full thread MIME::Parser: Kodierung der Umlaute von E-Mail-Attachments falsch