2017-05-11 16 views
0

件名をメールヘッダーで解析するときに問題があります。 たとえば、件名の形式は次のとおりです。 SO、SI、ESC $)C -電子メールの件名を解読するには

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

私の推測では、base64デコードは、エスケープ文字を含めるべきであるということです - 。ただし、デコードは含まれていません。 通常の文字列を取得するにはどうすればよいですか?

結果は以下のとおりです。

Subject: like this, 안녕하세요. 

コードレベルでの対応方法を教えてください。 Cで

更新

申し訳ありません。私はSO、SIでしたが、私はそれを逃しました。しかし、何もなかったESC $)C、問題はすぐに解決され、他の人と共有されます。

ESC $)Cの非存在下では、libiconvをは問題であるが、glibcの中gconv()は問題ではなかったです。私が使ったのは、libiconvでした。 に変更すると、gconvが問題を解決しました。

ありがとうございました。

+0

形式は '=?charset?encoding?encoded text?=。'エンコーディングはquoted-printableエンコーディングに似たQエンコーディングを表す 'Q'か、base64エンコーディングを示す' B'です。 –

+0

これまでのコードと出力を提供すれば、より多くの提案を得ることができます。 –

+0

ありがとうございますが、変換についてのほとんどの部分はわかっています。私はそれが** iso-200-KR **をどう扱うのだろうか。ありがとう。 –

答えて

1

したがって、=?iso-2022-KR?B?DjlMOC4PIA....gyDzogT?=では、Bは疑問符で挟まれ、base64でエンコードされています。 iso-2022-KRが文字セットです。 DjlMOC4PIA....gyDzogTはbase64でエンコードされたタイトルです。

まず、タイトルをbase64でデコードします。 a solution for this in Cを見つけるのは簡単です。

これにより、ISO-2022-KR文字セットでエンコードされたタイトルのバイナリバイトの配列が残されます。おそらく、UTF-8や他の文字セットに変換することができます。この部分の最善の策は、文字セット変換ユーティリティを使用することです。 LinuxまたはMacOSの場合は、iconvライブラリを使用できます。 iconv_open,iconvおよびiconv_closeを参照してください。

+0

ありがとう。私はすでにbase64のデコードを行い、iconvでそれを変換しました。しかし、base64の解読の結果は、何か文字セットに変換しても、ハングルではなく英語で同じ出力になります。メール本体では、iso-2022-kr ** - SO、SI、ESC $)C - **を変換するための特殊文字を含める必要がありました。しかし、base64のデコード結果にはこれらの文字は含まれていませんが、関連性がありますか? **件名**は**メール本体**と変換方法が異なりますか? –

関連する問題