mime_pls Ver.2.02について
1997年12月30日
[Top]
Document
[History]
mime_plsは、MIME encode/decodeのためのperl libraryです。メッセージ
ヘッダフィールド中の日本語文字列のMIME encode/decode(RFC2047参照)
と、メッセージボディのBase64形式およびQuoted-Printable形式の
encode/decode(RFC2045参照)の機能をPerlの関数として提供します。
メッセージヘッダフィールド中の日本語文字列のMIME化はISO-2022-JPの
B-encodingのみをサポートします。EUCまたはShiftJISの日本語文字列は
ISO-2022-JPに自動変換され、B-encodingによりMIME encoded-wordに変換
されます。また、MIME encoded-wordをデコードする際に出力漢字コード
を指定すると、ISO-2022-JPコードをEUCコードやShiftJISコードに変換
して出力することができます。
DOSマシン等の小メモリマシンで使用できるように、mimer.plとmimew.pl
の2つのライブラリファイルに分割しました。総称名としてはmime_pls
(まいむ・ぷるす)と名付けます。
このドキュメント以外に各ファイルの先頭にもドキュメントを付けたので
参照してください。
mime_plsのページ
<http://www.cc.rim.or.jp/~ikuta/mime_pls/>
を公開しました。
このページでは、mime_plsについての情報提供とmime_plsの配布を
行ないます。
Ver.2.02からは、mime_plsライブラリを使用するスクリプトがmimer.plと
mimew.plのバージョンをそれぞれ調べることができるように$mimer_version
と$mimew_versionの2つの変数を定義しています。
これらの変数は、値として浮動小数点数を持ちバージョンが上がるにした
がって単純増加することが、今後のバージョンにおいても保証されます。
このライブラリを利用したアプリケーションを書かれた場合には、この
ライブラリそのものを添付していただいて構いません。ただし、必ず本
ドキュメントを含む配布ファイルを全て添付してください。
改変して再配布する場合はライブラリファイル中の「配布条件」に従って
ください。
このプログラムを使用することにより生じた損害については、作者は
いかなる理由においても責任を負いません。使用される方の責任に
おいてお使いください。
-
- mime_pls.doc
- このファイル(のプレインテキスト版)です。
- history
(HTML版を見る)
- これまでの変更履歴を記述したドキュメントです。
- HTML形式ドキュメントファイル
- WWW上のページで公開しているHTML
文書です。
-
- requireすることにより、&mimedecode,&bodydecode,
&bdeflushの3つの関数が使用できます。Ver.2.02から、
$mimer_versionを参照することによりバージョン番号を調べること
ができるようになりました。
- &mimedecode($string,$kout)
- $string中のencoded-wordのうち、charset=ISO-2022-JP,encoding=B
のものを選択的にデコードし、$koutの指定にしたがって漢字コード
変換を行なった結果を返します。
$koutは"SJIS"または"EUC"が有効です。
$koutを省略した場合、または有効な指定がされなかった場合は
ISO-2022-JP(いわゆる7bit JIS)を返します。
RFC2047に基づき、encoded-wordにはさまれたLWS(空白、タブ文字、
改行+タブまたは空白)は削除します。デコードのあと、ISO-2022-JP
(RFC1468)で定義されたエスケープシーケンスのうち不要なものが
あれば削除します。
- &bodydecode($encoded,$coding)
- $coding が"b64"に等しいか指定しない場合は、$encoded
に入れられた文字列をMIME Base64形式のデータとみなしてデコード
し、その結果を返します。
Base64 alphabet(A-Za-z0-9+/=)以外の文字が存在しても単に無視
して処理します。
Base64のデコードは4バイト単位に行われるので、半端な部分(最後
の1〜3バイト)はバッファに保存され、次にこの関数が呼び出された
時にいっしょにデコードされます。
バッファをクリアするには &bdeflush関数を使用します。
$codingが"qp"に等しい場合は、$encodedに入れられた
文字列をMIME quoted-printable形式のデータとみなしてデコード
し、その結果を返します。
- &bdeflush($coding)
- $codingに"b64"または"qp"を指定すること
により、エンコード形式としてBase64またはQuoted-Printableを
選択することができます。
$codingを指定しなかった場合はBase64を選択したとみなされます。
&bodydecode関数によりバッファに保存されたデータを(Base64
の場合は最後に適当なpad文字'='を仮定して)デコードしその結果
を返します。
この関数が呼ばれると&bodydecodeのバッファがクリアされます。
-
- requireすることにより、&mimeencode,&bodyencode,
&benflushの3つの関数が使用できます。
Ver.2.02から、$mimew_versionを参照することによりバージョン
番号を調べることができるようになりました。
- &mimeencode($string)
- $string中の日本語コードの部分をISO-2022-JP(いわゆる7bit JIS)
に変換したあとMIME encoded-word(RFC2047参照)に変換し、
その結果を返します。
ShiftJISコードとEUCコードが同じ行にある場合を除き、文字
コードは自動的に判別します。エンコードされるISO-2022-JP
のエスケープシーケンスはライブラリファイル(mimew.pl)の
最初の方で設定できます。
$string中のShiftJISまたはEUCの文字列を正常にISO-2022-JP
に変換しエンコードするためには、英語版のPerlを使用する
必要があります。
encoded-wordがASCII文字や特殊文字と直接接することを避け
るために、必要に応じて空白を挿入します。encoded-word が
コメントの内側にある場合は例外扱いとして括弧との間に空白
を挿入しません。
長い日本語文字列は必要に応じて分割してエンコードし、また
必要に応じてencoded-wordの前後で折り返し(行分割)処理を
します。
- &bodyencode($data,$coding)
- $codingが"b64"に等しいか指定しない場合は、$data
中のデータをBase64エンコードしその結果を返します。
Base64エンコードの場合は出力1行(デフォルトでは72バイト)に
相当する単位(デフォルトでは54バイト)毎、Quoted-Printable
エンコードの場合は元データの論理行(改行コードによる行)毎に
処理します。
$dataのうち半端な部分はバッファ中に保存され、次の呼び出し
時にいっしょにエンコードされます。バッファをクリアするには
&benflush関数を使用します。
- &benflush($coding)
- $codingに"b64"または"qp"を指定すること
により、エンコード形式としてBase64またはQuoted-Printable
を選択することができます。$codingを指定しない場合はBase64
を選択したとみなされます。
&bodyencode関数によりバッファに保存したデータを選択した
形式でエンコードしその結果を返します。Base64の場合は、エン
コード結果が4の倍数長にならなければ必要に応じてpad文字'='を
追加します。
この関数が呼ばれると&bodyencodeのバッファがクリアされます。
-
- rmime
(スクリプトを見る)
- mimer.plを使用してMIME headerを
デコードするフィルターです。
使い方:[[j]perl] rmime [-s|-e|-j] [ファイル ...]
- wmime
(スクリプトを見る)
- mimew.plを使用してヘッダフィールド
中の日本語文字列をエンコードするフィルターです。
使い方:[[j]perl [-Llatin]] wmime [ファイル ...]
- rbody
(スクリプトを見る)
- mimer.plを使用してMIME
Base64/Quoted-Printable形式のデータをデコードするフィルター
です。DOSマシンのような小メモリの環境でも動作するように
メモリ使用を抑えて作ってあります。
使い方:[[j]perl] {-q|-b} rbody [ファイル ...]
- wbody
(スクリプトを見る)
- mimew.plを使用してデータをMIME
Base64/Quoted-Printable形式でエンコードするフィルターです。
DOSマシンのように使用できるメモリが少ない環境でも動作する
ようにメモリ使用を抑えて作ってあります。
使い方:[[j]perl] {-q|-b} wbody [ファイル ...]
-
- mimer.pl,mimew.pl,rmime,wmime,rbody,wbodyをインストールする
際に使用します。他には、ratやtar+gzip(or compress)+uuencode
で配布用のアーカイブを作成する機能があります。
作者の環境(SunOS4.1.3)で使うためのMakefileなので、他の環境
(特にUNIX系以外の環境)ではうまく動かないかもしれません。
[Top]
Document
[History]
Copyright (C) 1997 生田 昇
<noboru@ikuta.ichihara.chiba.jp>