Modified UTF-7について


IMAPでのフォルダ名が見たこともないエンコードで返ってきたので調べてみました。
その結果このエンコード方式は、修正UTF-7というものらしいです。IMAP-UTF7とも表現するみたいです。

当然ながら、Javaなどの言語で標準的な解釈器が用意されているわけでもないので、自分でデコード処理を行わないと、本来の文字列を得ることはできません。

この修正UTF-7は、次のようなデータとなっています。
・ “&”以外の文字列はそのまま格納されている。
・ “&”を表現したい場合には、”&-“として格納される。
・ “&”と”-“で挟まれているデータは変則的なBase64としてエンコードされている。
・ この変則的なBase64は通常のBase64と比べ、”/” と “,” が置き換わっている点と、Base64のパディング”=”は含めない点が異なる。

さて、このような特徴があるので、”&”の出現でASCII処理モードとBASE64処理モードを切り替えて実装することで、割と楽なデコーダーを作ることができそうです。BASE64の処理モードでは、”,”を”/”に置き換えてからすでにあるBase64のデコーダーに処理させます。

感想

初めてUTF-7なんてものを知りました。いいきっかけだったと思います。
エイプリルフール時のネタで作られたRFCで、UTF-9なんてものがあったのは知っていたのですが…。
まだまだ知らないことで一杯ですが、このようなチャレンジを通して知識を広げていけたらいいなと思います。

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする