ClipDecoder

2013年9月 メールの文字化け解消のためにこのページにアクセスされた方へ

ClipDecoder は Form 入力をメールで受け取った際に、それを解凍するためのツールです。メールの文字化けを解消するためには使えませんのでご注意ください。何より、MacOS Classic 用のソフトウェアですので、MacOS X では使えません。

最近のメールの文字化けは、メールの文字コードの設定が原因のものが多いようです。日本語のメールは、従来、文字コード(漢字コード)は JIS を使うのが標準だったのですが、最近では UTF-8 がデフォルト(標準設定)になっているメールソフトも増えてきているようです。受け取ったメールが文字化けしている場合には、文字コードの設定を確認してください。

〜プロバイダのホームページで Form を使う方法〜

Last Modified: September 19, 2013

*** 注意 ***

ClipDecoder は MacOS Classic 用の アプリケーションです。最新版は v2.02 です

*File メニューに Open を追加しました。添付ファイルになってしまう場合には、Open を選んで添付ファイルを指定してもらえば、読み込んで解読するようになっています。

ClipDecoder は <FORM METHOD=POST ACTION="mailto:xxx@yyy.zz> というタグを使ったページから送られてくるメールを解読し、ユーザーが記入/選択したデータを取り出すためのツールです。FORM タグで ENCTYPE を指定しているような場合には使えません(もっとも、この場合は、普通なら解読は不要なデータとして届くはずなのですが)。

StuffIt Deluxe 5.5 で圧縮した上で登録してあります。ダウンロード後、StuffIt Expander などで解凍してください。StuffIt Expander は最新版をお使い下さい。バージョンが古いものだとうまく解凍できません。

StuffIt Expander 日本語版の最新版はこちらで手に入ります:StuffIt Official Site

ClipDecoder のサポートは、 会議室「Web Scripter's Meeting」 で行います。疑問や質問がある場合は、遠慮なく、会議室のほうでたずねてください。


ClipDecoder 2.02 のダウンロード

ClipDecoder 2.01 の REALbasic のプロジェクト


v2.0 について

ClipDecoder は、もともと HyperCard のスタックとして作成したものなのですが、HyperCard (HyperCard Player) がデフォルトではインストールされなくなったという状況の変化をふまえて(HyperCard の入手方法に関する問い合わせが最近増えてきていたこともあって)、REALbasic 1.1.1 によってアプリケーションに作り直しました。

HyperCard はもはや不要です。 …一抹の寂しさを感じますが…

REALbasic 1.x 用のプロジェクトも公開しておきますので、ご自分で改造なさりたい方などは、どうぞご自由にお使い下さい。ただし、ClipDecoder 2.0 のクリエーター 'clpD' は、田中の ClipDecoder のクリエーターとして Apple に登録済みです。ですから、ご自分で改造なさったものを配布なさる場合には、アプリケーションのクリエーターおよびアイコンを、ご自分のものに変更なさることを、忘れないようにしてください。

v2.01 について

一部のブラウザが Quoated-Printable でエンコードして送ってくるのに対応したルーティンのバグを修正しました。
これでうまくいく… はずなんですが (^_^;;


v2.0 の使い方

まず、メールソフトで、メールとして受け取った FORM ページから送られてきたメッセージをそのままコピーします。

以下のようなものが送られてくるはずですので、それを丸ごとコピーするわけです。

comment=%82%B1%82%EA%82%CD%83e%83X%83g%83%81%83b%83Z%81%5B%83W%82%C5%82%B7&
NAME=%93c%92%86%8B%81%94V&mail=mact@antares.ecn.fpu.ac.jp

それから、ClipDecoder 2 を立ち上げて下さい。 ClipDecoderをダブルクリックしてもらうと、以下のようなウィンドウが表示されます。

「解凍する」をクリックしてもらうと、解凍したメッセージが表示されるようになっています。

File メニューの Save を使えば、解凍されたメッセージをファイルに保存することが可能です。

また、解凍されたメッセージ全体を選択しておいて、デスクトップにドラッグすれば、メッセージがクリッピングファイルとして保存されます。


プロバイダのホームページで Form を使う方法

その仕組

最近ではプロバイダの自分のディレクトリーに Home ページをおいて、自分のHome ページを作っている人も少なくないようです。そこでプロバイダのページで、比較的簡単に Form (オンライン書き込みページ)を利用する方法を紹介しておきます。

通常、Form を利用する場合は、ページに書き込まれたデータを受け取って処理するプログラムをサーバーにおいておく必要があります。しかしながら、プロバイダ利用の場合は、これは簡単には行えません(不可能ではないようですが)。しかしながら、抜け道があるのです。

それは、Form のデータを、サーバーに送らずに、自分宛のメールとして送るように設定しておくというものです。具体的には、Form タグの action の部分で

action="mailto:mact@antares.ecn.fpu.ac.jp"

というように、"mailto:アドレス" を使えば、指定したアドレスに、ページのデータが、メールとして送られるようになります。ですから、ここで自分のメールアドレスを指定しておけば、データをメールで受け取れるようになるわけです。

このように mailto を使えば Form を使えるようになるのですが、気をつけなければならないことが1つあります。それは、メールとして送られてくるデータはすべてが一つに連結された上に、URL という形式に変換されたものになっているということです。ですから、受け取ったメールのままでは、どんなメッセージを書き込んでもらっているかがわからない(日本語の場合は特に)のです。

たとえば「田中求之」は、%93c%92%86%8B%81%94V になります。

そこで、この URL 形式になっているデータを、もとのメッセージに戻す作業を行わなければなりません。

URL 形式になったデータは、基本的にはアルファベット以外の文字が %XX になっています。この XX が文字コードを指す Hex になっています。たとえばスペースは %20 ですし、リターン(CR)は %0D です。ですから、元に戻すためには、%XX のパターンを見つけては、それを XX が指す文字へ戻す作業を行えばよいということになります。


受け取ったデータの処理方法の説明 ここで、参考までに、Form のデータがどのようになって送られてくるか、そ れを元に戻すにはどのようにすればよいのか、を説明しておきます。

例として、次のような Form を利用するものとして説明しておきます。

----- Sample Form ------------ <form method="POST" action="mailto:mac@powermac"> 1:あなたのお名前は? <input name="Name"><p> 2:あなたのE-Mail アドレスは? <input name="E-mail"><p> 3:何かコメントがありましたらどうぞ<p> <textarea name="comment" rows=2 cols=40></textarea><p> <input type=submit value="Send"> <input type=reset value="Reset"> </form> ---------------------

この場合、以下のように表示されます( Send ボタンは省略)


1:あなたのお名前は?

2:あなたのE-Mail アドレスは?

3:何かコメントがありましたらどうぞ


さて、ここで、アクセスしてきた人が次のように入力して Send ボタンを押したとし ます。


1:あなたのお名前は?

2:あなたのE-Mail アドレスは?

3:何かコメントがありましたらどうぞ


すると、action で指定した mac@powemac あてに、以下のような形に変換された データがメールとして送られてきます。

name=%93c%92%86%8B%81%94V&E-mail=mact@anatares&comment=%83}%83b%83N%82%C5%83T%81[%83o%81[

これが URL 形式に変換されているデータです。

このデータは、フィールドに入力されたデータを URL エンコードしたうえで、 フィールド名とデータを = で連結し、さらに各フィールドを & でつないで1 つのメッセージに仕立てたものになっています。

ですから、このメッセージを元に戻すには、以下の手順で作業を行います。

  1. &をデリミタにして、メッセージをフィールドごとのブロックに分ける

  2. =をデリミタにして、各ブロックを2つのパートに分ける

  3. 各ブロックの第2パートが、入力されたデータをURLエンコードしたもの になっているので、これをURLデコードして元に戻す

これをまずフィールドごとにメッセージを分解する作業を行います。メッ セージは&によってすべてのフィールドのデータが連結されていますので &をデリミタにして切り分けます。すると、

    name=%93c%92%86%8B%81%94V
    E-mail=mact@anatares
    comment=%83}%83b%83N%82%C5%83T%81[%83o%81[

という3つのフィールドごとのデータに分かれます。次に、フィールド名 を取り除きます。今度はデリミタを=にして、各ブロックの第2パートを取り 出すわけです。この処理を行うと、
    %93c%92%86%8B%81%94V
    mact@anatares
    %83}%83b%83N%82%C5%83T%81[%83o%81[

になり、ユーザーが入力したデータだけを取り出せることになります。そし て最後に、それぞれをURLデコードします。すると
    田中求之
    mact@anatares
    マックでサーバー

となるわけです。

なお、実はここまでの処理がすんだ後に、もっと面倒な処理を行う必要がある のです。それは漢字コードの判定と変換です。フォームページから送られてく る日本語のメッセージは、漢字コードがEUCの場合とSJISの場合とがあります。 ですから、URL形式のものを元に戻したあとで、そのメッセージがどの漢字コー ドを使って書かれたものであるかをチェックし、必要に応じて変換を行わなけ ればなりません。この処理を行わないと、URLデコードがすんでも文字化けした ままのメッセージ(漢字コードが自分のマシンのものとは違うもの)に遭遇し てしまうことになります。

ClipDecoderでは XFCN によって漢字コードのチェックを行い、漢字コードが EUC であった場合は SJIS に変換する(マックは SJIS を使う)ようになって います。

以上、簡単ですが、参考になれば幸いです。