1POD2::JA::MIME::EncWordUss(e3r)Contributed Perl DocumentPaOtDi2o:n:JA::MIME::EncWords(3)
2
3
4

NAME

6       MIME::EncWords~[ja] - RFC 2047 encoded-word 関連 (改良版)
7

SYNOPSIS

9       MIME::EncWords は、RFC 2047 (旧 RFC 1522)
10       の仕様により適合することをめざした MIME::Words の別実装です。
11       加えて、いくらかの改良がなされています。 以下の梗概と説明は、もとの
12       MIME::Words から採ったものに、 改良点の説明 (**)
13       および変更点の説明と明確化 (*) を加えたものです。
14
15       読み進める前に、MIME::Tools を見るべきだ。そうして、
16       あなたの成し遂げようとしていることのどこでこのモジュールを使うのかを、
17       理解してほしい。 いますぐ。待ってるから。
18
19       いいかな。はじめるよ...
20
21           use MIME::EncWords qw(:all);
22
23           ### 文字列を、キャラクタセットは無視してデコードした文字列にする:
24           $decoded = decode_mimewords(
25                 'To: =?ISO-8859-1?Q?Keld_J=F8rn_Simonsen?= <keld@dkuug.dk>',
26                 );
27
28           ### 文字列を、デコードされた [DATA,CHARSET] の対の配列にする:
29           @decoded = decode_mimewords(
30                 'To: =?ISO-8859-1?Q?Keld_J=F8rn_Simonsen?= <keld@dkuug.dk>',
31                 );
32
33           ### 単一の「安全でない語」をエンコードする:
34           $encoded = encode_mimeword("\xABFran\xE7ois\xBB");
35
36           ### 文字列を、「安全でない語」を探しながらエンコードする:
37           $encoded = encode_mimewords("Me and \xABFran\xE7ois\xBB in town");
38

DESCRIPTION

40       合衆国の諸君。このモジュールでいったい何をやらかそうというのか、
41       わからないかもしれないね。欧州、ロシア等の諸君なら、わかるだろう。"(:-)"。
42
43       たとえば、これは有効な MIME ヘッダだ:
44
45             From: =?US-ASCII?Q?Keith_Moore?= <moore@cs.utk.edu>
46             To: =?ISO-8859-1?Q?Keld_J=F8rn_Simonsen?= <keld@dkuug.dk>
47             CC: =?ISO-8859-1?Q?Andr=E9_?= Pirard <PIRARD@vm1.ulg.ac.be>
48             Subject: =?ISO-8859-1?B?SWYgeW91IGNhbiByZWFkIHRoaXMgeW8=?=
49              =?ISO-8859-2?B?dSB1bmRlcnN0YW5kIHRoZSBleGFtcGxlLg==?=
50              =?US-ASCII?Q?.._cool!?=
51
52       これらのフィールドは、だいたいつぎのようにデコードできる:
53
54             From: Keith Moore <moore@cs.utk.edu>
55             To: Keld Jørn Simonsen <keld@dkuug.dk>
56             CC: André  Pirard <PIRARD@vm1.ulg.ac.be>
57             Subject: If you can read this you understand the example... cool!
58
59       追補: 合衆国、欧州の諸君。
60       このモジュールでいったいなにをやらかそうというのか、
61       わからないかもしれないね。東アジア等の諸君なら、わかるだろう。 "(^_^)".
62
63       たとえば、これは有効な MIME ヘッダだ:
64
65             Subject: =?EUC-KR?B?sNTAuLinKGxhemluZXNzKSwgwvzB9ri7seIoaW1w?=
66              =?EUC-KR?B?YXRpZW5jZSksILGzuLgoaHVicmlzKQ==?=
67
68       これらのフィールドは、だいたいつぎのようにデコードできる:
69
70             Subject: 게으름(laziness), 참지말기(impatience), 교만(hubris)
71

PUBLIC INTERFACE

73       decode_mimewords ENCODED, [OPTS...]
74           関数。 文字列から RFC 2047 スタイルの "Q" エンコーディング (quoted-
75           printable の一種) や "B" エンコーディング (base64)
76           を探し、それをデコードする。
77
78           配列コンテクストでは、文字列 ENCODED をデコードした "[DATA,
79           CHARSET]" の対に分割し、そのリストを返す。
80           エンコードされていなかったデータは 1 要素の配列 "[DATA]" で返す
81           (CHARSET は実質的に "undef")。
82
83               $enc = '=?ISO-8859-1?Q?Keld_J=F8rn_Simonsen?= <keld@dkuug.dk>';
84               foreach (decode_mimewords($enc)) {
85                   print "", ($_[1] || 'US-ASCII'), ": ", $_[0], "\n";
86               }
87
88           **
89           ただし、隣り合う「encoded-word」を、キャラクタセットがおなじなら連結する。
90           これは、マルチバイト列を安全に扱えるようにするためである。
91
92           ** RFC2231 第 5 節で定義している言語情報があれば、第 3
93           の要素として追加する。
94
95           * エンコードされていなかったデータの両端の空白文字は取り去らない。
96           これは、MIME::Words との互換性を保つためである。
97
98           スカラコンテクストでは、上記のリストの DATA 要素をすべて連結し、
99           それを返す。注意: 情報の損失があるので、
100           望んだ結果が得られないかもしれない。 だが、文字列 ENCODED
101           のすべての文字のキャラクタセットが同一だとわかっているのなら、
102           これは役に立つこともある。 (これを使う前に、"unmime" in
103           MIME::WordDecoder を見てほしい。 これが望みのものかもしれない。) **
104           下記の "Charset" も参照。
105
106           構文エラーが発生すると、$@ にエラーの説明をセットするが、
107           解析はできるかぎり (ヘッダのデコードで得られたなにかを返すために)
108           続行する。 エラーが見つからなければ、$@ は偽となる。
109
110           *
111           「encoded-word」が壊れているときは、エンコードしたままのものを返す。
112           この場合、$@ をセットする。
113
114           ENCODED に引き続く引数は、ハッシュによるオプションの定義とみなす。
115           ** Unicode/マルチバイト文字対応が有効になっていないとき
116           ("USE_ENCODE" in MIME::Charset 参照) は、
117           以下のオプションはなんの効果も持たない。
118
119           Charset **
120               スカラコンテクストで、DATA
121               要素をこの名前のキャラクタセットで変換する。
122               このオプションに特殊値 "_UNICODE_" を指定すると、 返す値は
123               Unicode 文字列となる。
124
125               Note: この仕様は、"_UNICODE_" を指定したとき以外は
126               やはり情報の損失がある。
127
128           Detect7bit **
129               エンコードされていなかった部分の 7
130               ビットキャラクタセットを判別しようとする。 初期値は "YES"。
131
132           Mapping **
133               スカラコンテクストで、
134               キャラクタセットの名前に対して実際に使うマッピングを指定する。
135               "EXTENDED" は拡張マッピングを使う。 "STANDARD"
136               は標準化されている厳密なマッピングを使う。 初期値は
137               "EXTENDED"。
138
139       encode_mimeword RAW, [ENCODING], [CHARSET]
140           関数。 「安全でない」文字のある単一の「語」RAW をエンコードする。
141           「語」全体がエンコードされる。
142
143               ### "«François»" をエンコードする:
144               $encoded = encode_mimeword("\xABFran\xE7ois\xBB");
145
146           エンコーディング ENCODING を指定できる ("Q" または "B")。 初期値は
147           "Q"。 ** さらに、「特殊」な値も指定できる。 "S" は "Q" と "B"
148           のうち短くなるほうを選ぶ。
149
150           キャラクタセット CHARSET を指定できる。初期値は "iso-8859-1"。
151
152           * "Q" エンコーディングでは、空白を ``_'' でエスケープする。
153
154       encode_mimewords RAW, [OPTS]
155           関数。 文字列 RAW
156           から、「安全でない」文字の列を見つけてエンコードしようとする。
157
158               ### 「安全でない語」のある文字列をエンコードする:
159               $encoded = encode_mimewords("Me and \xABFran\xE7ois\xBB");
160
161           エンコードした文字列を返す。
162
163           ** RAW は Unicode でもよい。ただし
164           Unicode/マルチバイト対応が有効な場合 ("USE_ENCODE" in MIME::Charset
165           参照)。 さらに RAW は、"decode_mimewords"
166           が配列コンテクストで返すものへの参照でもよい。
167           後の場合は、"Charset" オプション (下記参照) が適宜上書きされる
168           (下の注も参照)。
169
170           Note: * RAW が配列への参照であるときは、 隣り合う「encoded-word」
171           (つまり、ASCII 以外のキャラクタセット要素のある要素)
172           を連結する。その上で、マルチバイト文字の文字境界を考慮しながら
173           (ただしこれは Unicode/マルチバイト対応が有効なときだけ)、分割する。
174           エンコードしないデータ部分は両端に空白文字が必要。
175           そうしなければ隣り合う「encoded-word」に併合されてしまう。
176
177           RAW に引き続く引数は、ハッシュによるオプションの定義とみなす:
178
179           Charset
180               「安全でない」ものはこのキャラクタセットでエンコードする。
181               初期値は 'ISO-8859-1' (別名 "Latin-1")。
182
183           Detect7bit **
184               "Encoding" オプション (下記参照) が "a" に指定してあって
185               "Charset" オプションが不明なら、 RAW 文字列の 7
186               ビットキャラクタセットを判別しようとする。 初期値は "YES"。
187               Unicode/マルチバイト文字対応が有効になっていないとき
188               ("USE_ENCODE" in MIME::Charset 参照) は、
189               このオプションはなんの効果も持たない。
190
191           Encoding
192               使用するエンコーディング。"q" または "b"。 **
193               「特殊」な値も指定できる。"a"
194               は推奨されるエンコーディングを自動選択する
195               (キャラクタセットに別のものが推奨されるときはキャラクタセット変換も行う。
196               MIME::Charset~[ja] 参照)。 "s" は "q" と "b"
197               のうち短くなるほうを選ぶ。 Note: * リリース 1.005 で、初期値が
198               "q" (MIME::Words での初期値) から "a" に変わった。
199
200           Field
201               この文字列を使うメールフィールドの名前。 **
202               ヘッダをエンコードする際には、最初の行でメールフィールド名の長さを考慮する。
203
204           Folding **
205               エンコードする行を「行折り」する文字の列。初期値は "\n"。
206               空文字列 "" を指定すると、行長 (下記 "MaxLineLen" 参照)
207               を超える「encoded-word」を SPACE で分割するだけ。
208
209               Note: * RFC 5322 (旧 RFC 2822)
210               には、インターネットのメッセージでは行を CRLF ("\r\n")
211               で区切ると明記してあるが、
212               このモジュールでは後方互換性を保つために LF ("\n")
213               を初期値としてきた。 初期値を使っている場合、
214               エンコードしたヘッダをセッションへと放つ前に、
215               改行文字の変換が必要になることもある。
216
217           Mapping **
218               キャラクタセットの名前に対して実際に使うマッピングを指定する。
219               "EXTENDED" は拡張マッピングを使う。 "STANDARD"
220               は標準化されている厳密なマッピングを使う。 初期値は
221               "EXTENDED"。
222               Unicode/マルチバイト文字対応が有効になっていないとき
223               ("USE_ENCODE" in MIME::Charset 参照) は、
224               このオプションはなんの効果も持たない。
225
226           MaxLineLen **
227               行の最大長 (改行を除く)。 初期値は 76。
228               負の値は行長無制限を意味する (リリース 1.012.3 以降)。
229
230           Minimal **
231               エンコードするテキストの中の自然な語分離子 (要するに空白文字)
232               に注意を払う。 "NO" を指定すると、
233               このモジュールは空白文字を考慮せずにテキスト全体をエンコード
234               (エンコードが必要なら)
235               し、行長を超える「encoded-word」は単にその長さによって分割される。
236               初期値は "YES" で、最小限の部分だけエンコードする。 "DISPNAME"
237               を指定すると、RFC5322 (旧 RFC2822、RFC822) のアドレス仕様
238               (3.4節) で述べている特殊文字を含む部分もエンコードする。
239               これはアドレスフィールド中の display-name
240               をエンコードする際に有用である。
241
242               Note: リリース 0.040 で、初期値が "YES" に変わった。
243               MIME::Words との互換性を保つためである。
244               それ以前のリリースでは、このオプションは "NO" 固定であった。
245
246               Note: "DISPNAME" はリリース 1.012 で導入された。
247
248           Replacement **
249               "エラー処理" in MIME::Charset~[ja] 参照。
250
251   設定ファイル **
252       "decode_mimewords" ('Charset' オプションを除く) および
253       "encode_mimewords" のオプション引数の組み込み初期値は、
254       設定ファイルで上書きできる。 MIME/Charset/Defaults.pm
255       MIME/EncWords/Defaults.pm。 詳細は MIME/EncWords/Defaults.pm.sample
256       を読んでほしい。
257

VERSION

259       $VERSION 変数を参照してほしい。
260
261       このモジュールの開発版が <http://hatuka.nezumi.nu/repos/MIME-EncWords/>
262       にある。
263

SEE ALSO

265       MIME::Charset~[ja], MIME::Tools
266

AUTHORS

268       decode_mimewords() 関数の元の版は MIME::Words
269       モジュールから引き継いだもので、著者は以下のとおり:
270           Eryq (eryq@zeegee.com), ZeeGee Software Inc
271       (http://www.zeegee.com).
272           David F. Skoll (dfs@roaringpenguin.com)
273       http://www.roaringpenguin.com
274
275       そのほかの部分は、次の者が書き直しあるいは加えた:
276           Hatuka*nezumi - IKEDA Soji <hatuka(at)nezumi.nu>.
277
278       This program is free software; you can redistribute it and/or modify it
279       under the same terms as Perl itself.
280
281
282
283perl v5.30.1                      2020-01-30       POD2::JA::MIME::EncWords(3)
Impressum