|
|
| |
POD2::JA::MIME::Charset(3) |
User Contributed Perl Documentation |
POD2::JA::MIME::Charset(3) |
MIME::Charset~[ja] - MIME
のためのキャラクタセット情報
use MIME::Charset:
$charset = MIME::Charset->new("euc-jp");
キャラクタセット情報の取得:
$benc = $charset->body_encoding; # 例 "Q"
$cset = $charset->as_string; # 例 "US-ASCII"
$henc = $charset->header_encoding; # 例 "S"
$cset = $charset->output_charset; # 例 "ISO-2022-JP"
テキストデータの変換:
($text, $charset, $encoding) =
$charset->header_encode(
"\xc9\xc2\xc5\xaa\xc0\xde\xc3\xef\xc5\xaa".
"\xc7\xd1\xca\xaa\xbd\xd0\xce\xcf\xb4\xef",
Charset => 'euc-jp');
# ...例えば (<変換ずみ文字列>, "ISO-2022-JP", "B") を返す。
($text, $charset, $encoding) =
$charset->body_encode(
"Collectioneur path\xe9tiquement ",
Charset => 'latin1');
# ...例えば (<元の文字列>, "ISO-8859-1", "QUOTED-PRINTABLE") を返す。
$len = $charset->encoded_header_len(
"Perl\xe8\xa8\x80\xe8\xaa\x9e",
Charset => "utf-8",
Encoding => "b");
# ...例えば 28 を返す。
モジュール既定値の操作:
MIME::Charset::alias("csEUCKR", "euc-kr");
MIME::Charset::default("iso-8859-1");
MIME::Charset::fallback("us-ascii");
非OO関数
(近い将来に廃止):
use MIME::Charset qw(:info);
$benc = body_encoding("iso-8859-2"); # "Q"
$cset = canonical_charset("ANSI X3.4-1968"); # "US-ASCII"
$henc = header_encoding("utf-8"); # "S"
$cset = output_charset("shift_jis"); # "ISO-2022-JP"
use MIME::Charset qw(:trans);
($text, $charset, $encoding) =
header_encode(
"\xc9\xc2\xc5\xaa\xc0\xde\xc3\xef\xc5\xaa".
"\xc7\xd1\xca\xaa\xbd\xd0\xce\xcf\xb4\xef",
"euc-jp");
# ...(<変換されたテキスト>, "ISO-2022-JP", "B") を返す。
($text, $charset, $encoding) =
body_encode(
"Collectioneur path\xe9tiquement ".
"\xe9clectique de d\xe9chets",
"latin1");
# ...(<元のテキスト>, "ISO-8859-1", "QUOTED-PRINTABLE") を返す。
$len = encoded_header_len(
"Perl\xe8\xa8\x80\xe8\xaa\x9e", "b", "utf-8"); # 28
MIME::Charset
は、インターネット上での
MIME
メッセージに用いるキャラクタセットの情報を提供する。
キャラクタセット
とは、MIME での ``character set''
のことで、
オクテットの列を文字の列に変換する方法を指す。
これは、ISO/IEC における
``符号化文字集合'' (CCS) と
``文字符号化法'' (CES)
の両方の概念を包含する。
エンコーディング
とは、MIME
でのそれのことで、
メッセージ本体やメッセージヘッダ本体を印字可能な
US-ASCII
文字の列として表現する方法を指す。
- $charset = MIME::Charset->new([CHARSET [, OPTS]])
- キャラクタセットオブジェクトを作成して返す。
OPTS
には次の対を指定できる。
NOTE:
Unicode/マルチバイト対応が有効になっていないとき
("USE_ENCODE" 参照) は、
変換を行わないので、次のオプションは効果を持たない。
- Mapping => MAPTYPE
- キャラクタセット名に対して実際に使うマッピングの拡張をするかどうか。
"EXTENDED"
は拡張マッピングを使う。
"STANDARD"
は標準化されている厳密なマッピングを使う。
既定は
"EXTENDED"。
- $charset->body_encoding
- body_encoding CHARSET
- CHARSET
のメッセージ本体で推奨される伝送エンコーディングを取得する。
返値は "B"
(BASE64)、"Q"
(QUOTED-PRINTABLE)、"S"
(どちらか短いほう)、
"undef"
(伝送エンコードしなくてよい
--- 7BIT か 8BIT)
のいずれか。これはメッセージヘッダのエンコーディングとは違うこともある。
- $charset->as_string
- canonical_charset CHARSET
- キャラクタセットの正規の名前を取得する。
- $charset->decoder
- キャラクタセットを
Unicode
に復号するのに使う
"Encode::Encoding"
オブジェクトを返す。
キャラクタセットが指定されていなかったか、当モジュールの知らないキャラクタセットであった場合は、undef
値を返す。
- $charset->dup
- キャラクタセットオブジェクトを複写する。
- $charset->encoder([CHARSET])
- インターネット上の
MIME
メッセージで使うことを推奨される互換キャラクタセットで符号化するのに使う
"Encode::Encoding"
オブジェクトを返す。
CHARSET
引数を指定した場合、$charset
オブジェクトの符号化器
(および出力キャラクタセット名)
を、CHARSET
のそれに置き換える。
つまり、$charset
オブジェクトは元のキャラクタセットから新たな
CHARSET
への変換器となる。
- $charset->header_encoding
- header_encoding CHARSET
- CHARSET
のメッセージヘッダで推奨されるエンコーディング法を取得する。
返値は
"B"、"Q"、"S"
(どちらか短くなるほう)、
"undef"
(エンコードしなくてよい)
のいずれか。これはメッセージ本体のエンコーディングとは違うこともある。
- $charset->output_charset
- output_charset CHARSET
- 指定した CHARSET
と互換で、インターネット上の
MIME
メッセージで使うことを推奨されるキャラクタセット名を
(当モジュールが知っていれば)
取得する。
Unicode/マルチバイト対応が有効になっていないとき
("USE_ENCODE" 参照) は、
この関数は単に
"canonical_charset"
の結果を返す。
- $charset->body_encode(STRING [, OPTS])
- body_encode STRING, CHARSET [, OPTS]
- STRING を (必要なら)
変換したデータと、
メッセージ本体で推奨される伝送エンコーディングを取得する。
CHARSET は STRING
を符号化しているキャラクタセット。
OPTS
には以下の対を指定できる。
NOTE:
Unicode/マルチバイト対応が有効になっていないとき
("USE_ENCODE" 参照) は、
変換を行わないので、以下のオプションは効果を持たない。
- Detect7bit => YESNO
- CHARSET
がないとき、7ビットのキャラクタセットを自動認識しようとする。
既定は
"YES"。
- Replacement => REPLACEMENT
- エラー処理法の指定。"エラー処理"
参照。
3要素のリスト
(変換ずみの文字列,
出力のキャラクタセット,
伝送エンコーディング)
が返る。
伝送エンコーディング
は
"BASE64"、"QUOTED-PRINTABLE"、
"7BIT"、"8BIT"
のいずれか。出力のキャラクタセット
が決定できず、
変換ずみの文字列
が
ASCII以外のバイトを含むときは、
出力のキャラクタセット
は
"undef"、伝送エンコーディング
は "BASE64"
となる。
出力のキャラクタセット
が "US-ASCII"
となるのは、文字列が
ASCII以外のバイトを含まないときに限る。
- $charset->decode(STRING [,CHECK])
- STRING を Unicode
文字列に復号する。
NOTE:
Unicode/マルチバイト対応が有効になっていないとき
("USE_ENCODE" 参照) は、
この機能を実行すると死ぬ。
- detect_7bit_charset STRING
- 文字列 STRING
を符号化している7
ビットキャラクタセットを推測する。
STRING
が8ビットのバイトを含むときは
"undef" を返す。
そうでないとき、キャラクタセットが不明なら初期キャラクタセットを返す。
- $charset->encode(STRING [, CHECK])
- STRING (Unicode
文字列または普通の文字列)
を、
元のキャラクタセットと互換でインターネット上の
MIME
メッセージで使うことを推奨されるキャラクタセットを
(当モジュールが知っていれば)
使って、符号化する。
元のキャラクタセットと互換キャラクタセットが同じでも、
文字列を Unicode
に復号してから符号化することに注意。
NOTE:
Unicode/マルチバイト対応が有効になっていないとき
("USE_ENCODE" 参照) は、
この機能を実行すると死ぬ。
- $charset->encoded_header_len(STRING [, ENCODING])
- encoded_header_len STRING, ENCODING, CHARSET
- STRING
をメッセージヘッダとしてエンコードしたときの長さ
(行折りはしないとして)
を取得する。
ENCODING は
"B"、"Q"、"S"
("B" と
"Q"
のうち短くなるほう)
のいずれか。
- $charset->header_encode(STRING [, OPTS])
- header_encode STRING, CHARSET [, OPTS]
- STRING を (必要なら)
変換したデータと、
メッセージヘッダで推奨されるエンコーディング法を取得する。
CHARSET は STRING
を符号化しているキャラクタセット。
OPTS
には以下の対を指定できる。
NOTE:
Unicode/マルチバイト対応が有効になっていないとき
("USE_ENCODE" 参照) は、
変換を行わないので、以下のオプションは効果を持たない。
- Detect7bit => YESNO
- CHARSET
がないとき、7ビットのキャラクタセットを自動認識しようとする。
既定は
"YES"。
- Replacement => REPLACEMENT
- エラー処理法の指定。"エラー処理"
参照。
3要素のリスト
(変換ずみの文字列,
出力のキャラクタセット,
エンコーディング法)
が返る。
エンコーディング法
は
"B"、"Q"、"undef"
(エンコードしなくてよい)
のいずれか。
出力のキャラクタセット
が決定できず、変換ずみの文字列
が
ASCII以外のバイトを含むときは、出力のキャラクタセット
は "8BIT"
(これはキャラクタセットの名前ではなく、符号化が不可能なデータを表す特殊値)
で
エンコーディング法
は "undef"
(エンコードするべきではない)
となる。
出力のキャラクタセット
が "US-ASCII"
となるのは、文字列が
ASCII以外のバイトを含まないときに限る。
- $charset->undecode(STRING [,CHECK])
- Unicode 文字列 string を、
$charset
の入力キャラクタセットを使って文字列に変換する。
これは
"$charset->decoder->encode()"
と同等である。
NOTE:
Unicode/マルチバイト対応が有効になっていないとき
("USE_ENCODE" 参照) は、
この機能を実行すると死ぬ。
- alias ALIAS [, CHARSET]
- "canonical_charset"
で正規名を決定するためのキャラクタセットの別名を取得/設定する。
CHARSET
があって偽でないとき、ALIAS
が CHARSET
の別名に登録される。
さもなければ、別名に変更はない。いずれの場合でも、
現在 ALIAS
が登録されているキャラクタセットを返す。
- default [CHARSET]
- 既定キャラクタセットを取得/設定する。
既定キャラクタセットとは、
当モジュールで、処理のためのキャラクタセットが不明なときに用いるキャラクタセット。
当モジュールを利用するモジュールでは、
処理のためのキャラクタセットが不明なときや暗黙の既定値が必要なとき、
このキャラクタセットを使うことを推奨する。
これは既定では
"US-ASCII"。
CHARSET
があって偽でなければ、それを既定キャラクタセットに設定する。
さもなければ、既定キャラクタセットは変わらない。いずれの場合でも、
現在の既定キャラクタセットを返す。
NOTE:
既定キャラクタセットは変更するべきではない。
- fallback [CHARSET]
- 予備キャラクタセットを取得/設定する。
予備キャラクタセットとは、
当モジュールで、指定されたキャラクタセットでの変換が失敗し、
エラー処理法に
"FALLBACK"
が指定されていたときに用いるキャラクタセット。
当モジュールを利用するモジュールでは、
キャラクタセット変換が失敗するときに最終手段としてこのキャラクタセットを使ってもよい。
これは既定では
"UTF-8"。
CHARSET
があって偽でなければ、それを予備キャラクタセットに設定する。
CHARSET が "NONE"
であれば、予備キャラクタセットを未定にする。
さもなければ、予備キャラクタセットは変わらない。いずれの場合でも、
現在の予備キャラクタセットを返す。
NOTE:
予備キャラクタセットに
"US-ASCII"
を指定する価値はある。
変換の結果は、キャラクタセット情報がないときも可読となる。
- recommended CHARSET [, HEADERENC, BODYENC [, ENCCHARSET]]
- キャラクタセットの特性を取得/設定する。
必須でない引数があってそのどれかが偽でなければ、
その引数で CHARSET
の特性を設定する。さもなければ、特性は変わらない。
いずれの場合でも、CHARSET
の現在の特性を 3
要素のリスト (HEADERENC, BODYENC,
ENCCHARSET) として返す。
HEADERENC
はメッセージヘッダで推奨されるエンコーディング法。
"B"、"Q"、"S"
(どちらか短くなるほう)、
"undef"
(エンコードしなくてよい)
を指定できる。
BODYENC
はメッセージ本体で推奨される伝送エンコーディング。
"B"、"Q"、"S"
(どちらか短くなるほう)、"undef"
(伝送エンコードしなくてよい)
を指定できる。
ENCCHARSET は、指定した
CHARSET
と互換で、インターネット上の
MIME
メッセージで使うことを推奨されるキャラクタセット名。
変換が必要ない
(または当モジュールが適当なキャラクタセットを知らない)
ときは、 ENCCHARSET は
"undef"。
NOTE:
この関数の今後の版では、ほかにも必須でない引数をとれるようになるかもしれない
(たとえば、文字幅、行分割の挙動などについての属性)。
そのため、返値の形式も変わるかもしれない。個々の特性を取得するには
"header_encoding"、"body_encoding"、"output_charset"
を使ってほしい。
- USE_ENCODE
- Unicode/マルチバイト対応フラグ。
Unicode
とマルチバイトへの対応が有効になっているときは、空でない文字列が設定されている。
現在、このフラグは
Perl 5.7.3
以降で空でなく、それより以前の
Perl では空の文字列。
"body_encode" と "header_encode" の
"Replacement"
オプションには以下のものを指定できる:
- "DEFAULT"
- 不正な文字を置き換え文字で置き換える。
UCM
に基づく符号化器を持つキャラクタセットでは
<subchar>
を使うことがある。
- "FALLBACK"
- 予備キャラクタセット
を使って
"DEFAULT"
方式をやってみる
("fallback" 参照)。
予備キャラクタセットが未定で変換がエラーを起こしたときは、
コードはエラーメッセージを出力して死ぬ。
- "CROAK"
- コードはエラーメッセージを出力してすぐ死ぬ。
したがって、本当にエラーで死なせたくなければ
eval{}
で致命的エラーを受け止めなければいけない。
"STRICT"
でも同じ。
- "PERLQQ"
- "HTMLCREF"
- "XMLCREF"
- Encode
モジュールで定義している
"FB_PERLQQ"、"FB_HTMLCREF"、"FB_XMLCREF"
の方式を使う。
- 数値
- 数値を指定することもできる。
詳細は "Handling Malformed Data" in Encode
を見てほしい。
エラー処理法が指定されないか、上記以外のエラー処理法が指定されたときは、
"DEFAULT"
とみなす。
オプションのパラメタの組み込み既定値は、設定ファイル
MIME/Charset/Defaults.pm
で変更することができる。
詳しくは MIME/Charset/Defaults.pm.sample
を読んでほしい。
$VERSION
変数を見てほしい。
このモジュールの開発版が
<http://hatuka.nezumi.nu/repos/MIME-Charset/>
にある。
- 1.001
- •
- new() メソッドは CHARSET
引数を指定しなくてもオブジェクトを返すようになった。
- 1.005
- •
- encoded-word
に含まれる文字種を
RFC 2047 の 5 (3)
節のとおりにした。
encoded_header_len()
メソッドの返値も変わる。
- 1.008.2
- body_encoding() メソッドも
"S"
を返せるようになった。
- body_encode() メソッドの UTF-8
に対する返値のエンコーディング要素は、
これまでのリリースでは
"BASE64"
に固定だったが、"QUOTED-PRINTABLE"
になることがある。
Multipurpose Internet Mail Extensions (MIME).
Hatuka*nezumi - IKEDA Soji <hatuka(at)nezumi.nu>
Copyright (C) 2006-2017 Hatuka*nezumi - IKEDA Soji. This program is free
software; you can redistribute it and/or modify it under the same terms as
Perl itself.
Visit the GSP FreeBSD Man Page Interface. Output converted with ManDoc. |