2010/11/06

quoted-printable のデコードを実装した

 
出来てしまえば、たった60行のソースコード。
 
しかしアルゴリズムを調べるながら開発すると3時間~4時間ほど、
かかってしまう。不思議。
 
エディタを全画面化すればギリギリ画面内に収まるかどうかのコード
しかないのに。
 
ただのコーダーなら楽な仕事、ライブラリを使うプログラマーなら楽な仕事、
1から調べ、理解し、考え実装し、テストとなると大変。
 
車輪の再発明は、仕事をやる上では無駄…と言うか効率が悪い。しかしスーパー
プログラマーとして成長していくなら、自分は必要なものと考えてます。
 
 
こんなわけでメーラーで使われている、quoted-printable をデコードする
メソッドを実装しました。
 
Quoted-printable(QP encodingとも呼ばれる)は、印字可能な文字
(例えば、英数字や等号「=」)を使用した符号化方式であり、8ビットデータを
7ビットデータパスで転送するためのものである。

インターネット電子メールで使用できるようにするため、
Content-Transfer-Encodingとして定義されている。              wikiより
 
これを実装する上で肝となったものは、
1B$B  で2バイトコードが始まり、=1B(B2バイトコード終了
言った所でしょうか。
 
とは言っても、上記の括りの間 1バイトコードも出てくるので
当然それも考慮しなければならない。
 
ネットで単純に紹介されている =8D=3D の形式だけではメーラーの本文は
デコード出来ないので要注意ですね。
 
16進数になっている、= が行の終端で出てくるときは特別な意味を持つ、
区切り文字を判断する、この3点を意識すれば60行ほどで実装できます。
 
純粋な C 言語だと、もう少し長くなるかもしれませんが。

0 件のコメント:

コメントを投稿