2017-05-11 5 views
0

Es gibt ein Problem beim Parsen des Betreffs im Mail-Header. Zum Beispiel ist die Form des Themas wie folgt.Wie dekodiere ich eine E-Mail Betreff

subject: =?iso-2022-KR?B?DjlMOC4PIA....gyDzogT?= 

Meine Vermutung ist, dass Base64-Decodierung des Escape-Zeichen enthalten soll - SO, SI, ESC $) C -. Die Decodierung ist jedoch nicht enthalten. Wie bekomme ich eine normale Zeichenfolge?

Ich hoffe, die Ergebnisse sind wie folgt.

Subject: like this, 안녕하세요. 

Bitte geben Sie mir einen Hinweis, wie Sie auf Codeebene reagieren. in C

aktualisieren

sorry. Ich hatte eine SO, SI, aber ich habe es verpasst. Aber es gab keine ESC $) C, Das Problem wird sofort gelöst und für andere geteilt.

In Abwesenheit eines ESC $) C, der libiconv ist ein Problem, aber der gconv (in glibc) war kein Problem. Was ich verwendet habe, war die libiconv. Wechseln zu gconv hat das Problem gelöst.

danke.

+0

Die Form ist: '=? Zeichensatz? Codierung? Kodierter Text? –

+0

Um mehr Vorschläge zu erhalten, ist es besser, wenn Sie den Code und die Ausgabe, die Sie bisher haben, angeben. –

+0

Vielen Dank, aber der größte Teil über die Umwandlung ist bekannt. Ich frage mich nur, wie es behandelt ** iso-200-KR **. –

Antwort

1

So in =?iso-2022-KR?B?DjlMOC4PIA....gyDzogT?= die B durch Fragezeichen eingeklammert bedeutet Base64 codiert. Die iso-2022-KR ist der Zeichensatz. Der DjlMOC4PIA....gyDzogT ist der Base64-codierte Titel.

Sie zuerst base64 den Titel decodieren. Es ist leicht zu finden a solution for this in C.

Dies wird Sie mit einem Array von Binär-Bytes verlassen, die den Titel im ISO-2022-KR Zeichensatz codiert ist. Vermutlich möchten Sie das in UTF-8 oder einen anderen Zeichensatz konvertieren, mit dem Ihr Computer umgehen kann. Die beste Option für diesen Teil ist die Verwendung eines Zeichensatzkonvertierungsprogramms. Wenn Sie Linux oder Mac OS verwenden, können Sie die Bibliothek iconv verwenden. Siehe iconv_open, iconv und iconv_close.

+0

danke. Ich habe die base64-Decodierung bereits durchgeführt und über iconv konvertiert. Das Ergebnis der base64-Decodierung ist jedoch dieselbe Ausgabe in Englisch, nicht in Hangul, selbst wenn in einen Zeichensatz konvertiert wird. Im Mail-Text war es notwendig, Sonderzeichen einzufügen, um iso-2022-kr ** - SO, SI, ESC $) C - ** zu konvertieren. Das base64-Decodierungsergebnis enthält diese Zeichen jedoch nicht, ist es relevant? Unterscheidet sich das ** Betreff ** von dem ** Mail-Text ** in der Art, wie es konvertiert wird? –

Verwandte Themen