- ベストアンサー
メールのデコードについて(RFC2231)
よろしくお願いいたします。 メーラー(Becky!やALMAIL等)によっては、RFC2231形式で添付ファイル名をエンコードして送信していますが、RFC2231形式で送信された添付ファイル名をデコードする方法をご教授いただきたく。 下記の@ITで紹介された記事によるとRFC2231形式は%の後ろ2文字の16進数がエンコードされた文字コードであるとなっています。 http://www.atmarkit.co.jp/fnetwork/rensai/netpro04/netpro01.html しかし、Becky!等のメーラーでは、下記の【】内のように、%の間が2文字以上の場合や、ASCII文字列は直接埋め込まれてしまうパターンがあります。 【filename*=iso-2022-jp''%1B%24B%24%5B%242%24%5B%242%1B%28B%2Etxt】→元は【ほげほげ.txt】 ASCII文字列が直接埋め込まれている部分は何とかなるとして、%24B%のような部分はどのようにデコードするのでしょうか? もしかしてBはBASE64?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
「% + 16進2桁」を 1つの文字に変換してください. 例えば %1B%24B%24%5B%242%24%5B%242%1B%28B%2Etxt だと「%1B」「%24」B「%24」「%5B」「%24」2「%24」「%5B」「%24」2「%1B」「%28」B「%2E」txt のように区切って, それぞれを変換することになります. ESC-$-B-$-[-$-2-$-[-$-2-ESC-(-B-.-txt となり, これは最初の「ESC-$-B」のシーケンスから ISO-2022-JP であることがわかるのでさらにデコードすると「ほげほげ.txt」となります.
その他の回答 (1)
- shimix
- ベストアンサー率54% (865/1590)
>【filename*=iso-2022-jp''%1B%24B%24%5B%242%24%5B%242%1B%28B%2Etxt】→元は【ほげほげ.txt】 「%1B%24B, %24%5B%242, %24%5B%242, %1B%28B」なので、それが正解だと思いますが・・ http://www.emaillab.org/essay/japanese-filename.html#rfc2231
お礼
ご回答ありがとうございます。 参考URLは知っていたのですが、エンコードについては触れられていないみたいでした。 RFC2231にも目は通したのですが、欲しい情報は載っていなかったです。 メールのエンコードは煩雑なので、早く統一されて欲しいものです。
お礼
ご回答ありがとうございます。 ストライクの回答でした。 %の後ろ2文字を16進数から10進数に変換。それより後の文字はアスキーコードに変換。その後全てを連結して指定された文字コードでデコードすると元の文字列に復元することができました。