Ruby 1.9.3 リファレンスマニュアル > ライブラリ一覧 > iconvライブラリ > Iconvクラス

class Iconv

クラスの継承リスト: Iconv < Data < Object < Kernel < BasicObject

要約

iconv 関数のラッパークラスです。

特異メソッド

charset_map -> {String => String}

文字コードセット名からシステム依存の文字コードセット名への Hash を返します。

conv(to, from, str) -> String

与えられた文字コードにしたがって str を変換し、結果を文字列として返します。

次の省略形です。

Iconv.iconv(to, from, str).join
[PARAM] to:
変換先の文字コード体系を表す文字列を指定します。
[PARAM] from:
変換前の文字コード体系を表す文字列を指定します。
[PARAM] str:
変換したい文字列を指定します。

このメソッドは Iconv.new, Iconv.open および Iconv#iconv の例外 を起こします。

ctlmethods -> [Symbol]

システム上のlibiconvのiconvctl()関数で使用可能なフラグのリストを Symbol の配列として返します。

iconv(to, from, *strs) -> [String]

与えられた文字コードにしたがって strs を変換し、結果を文字列の配列として返します。

次の省略形です。

Iconv.open(to, from) {|cd| (strs + [nil]).collect {|s| cd.iconv(s)}}
[PARAM] to:
変換先の文字コード体系を表す文字列を指定します。
[PARAM] from:
変換前の文字コード体系を表す文字列を指定します。
[PARAM] strs:
変換したい文字列を指定します。

このメソッドは Iconv.new, Iconv.open および Iconv#iconv の例外 を起こします。

list -> [String]
list {|*aliases| ... } -> nil

各エイリアスセットごとに繰り返すイテレータです。 ブロックが指定されていなければ、その利用可能な文字コード体系の名前を文字列の配列として返します。 Iconv 標準の機能ではないのでサポートされるかはプラットフォームに依存します。

[EXCEPTION] NotImplementedError:
実行プラットフォームでサポートされていない場合に発生します。
new(to, from, options = nil) -> Iconv

文字コード from から to へ変換するIconvオブジェクトを生成します。

[PARAM] to:
変換先の文字コード体系を表す文字列を指定します。
[PARAM] from:
変換前の文字コード体系を表す文字列を指定します。
[PARAM] options:
ハッシュ形式で transliterate、discard_ilseq に真か偽かを 与えてiconv/環境依存の機能 と同じ操作を行います。
[EXCEPTION] TypeError:
to や from が String オブジェクトでないとき発生します。
[EXCEPTION] Iconv::InvalidEncoding:
to や from で指定された文字コード体系が見つからないとき発生します。
[EXCEPTION] SystemCallError:
iconv_open(3) が失敗したとき発生します。
[EXCEPTION] ArgumentError:
options に transliterate、discard_ilseq 以外を指定 した場合に発生します。
[EXCEPTION] NotImplementedError:
実行プラットフォームでサポートされていないオ プションを指定した場合に発生します。

例:

require 'iconv'
# EUC-JP から SHIFT_JIS へ変換するIconvオブジェクトを生成。
icv = Iconv.new('SHIFT_JIS', 'EUC-JP')

[SEE_ALSO] Iconv.open

open(to, from, options = nil) -> Iconv
open(to, from, options = nil) {|cd| ...} -> object

ブロックが与えられない場合は Iconv.new と等価です。 ブロックが与えられると、Iconv オブジェクトを生成し、それを引数としてブロックを実行します。 ブロックの終りに Iconv オブジェクトは close されます。 ブロックの値を返します。

[PARAM] to:
変換先の文字コード体系を表す文字列を指定します。
[PARAM] from:
変換前の文字コード体系を表す文字列を指定します。
[PARAM] options:
ハッシュ形式で transliterate、discard_ilseq に真か偽かを 与えてiconv/環境依存の機能 と同じ操作を行います。
[EXCEPTION] TypeError:
to や from が String オブジェクトでないとき発生します。
[EXCEPTION] Iconv::InvalidEncoding:
to や from で指定された文字コード体系が見つからないとき発生します。
[EXCEPTION] ArgumentError:
options に transliterate、discard_ilseq 以外を指定 した場合に発生します。
[EXCEPTION] NotImplementedError:
実行プラットフォームでサポートされていないオ プションを指定した場合に発生します。

例:

euc = ["a4a2a4a4a4a6a4a8a4aa"].pack("H*") # あいうえおのEUC-JPコード

Iconv.open("UTF-8", "EUC-JP") do |i|
  str = i.iconv(euc)
  str << i.iconv(nil)
end
puts str #=> あいうえお

[SEE_ALSO] Iconv.new

インスタンスメソッド

close -> String

変換を終了します。出力バッファを初期シフト状態に戻すための文字列を返します。 出力の文字符号化方式が内部状態をも持たない場合、空文字列を返します。

このメソッドが呼ばれたあとで Iconv#iconv が呼ばれると例外が 起きますが、close 自体は繰返し呼ばれても成功します。

例:

i = Iconv.open("ISO-2022-JP", "EUC-JP")
i.iconv("\264\301")     #=> "\e$B4A"
i.iconv("\273\372")     #=> ";z"
i.close                 #=> "\e(B"
conv(str) -> String

文字列を変換し、変換後の文字列を返します。 str が nil の場合、空文字列""を返します。

[PARAM] str:
変換される文字列を指定します。

例:

utf8 = ["E38182E38184E38186E38188E3818A"].pack("H*") # あいうえお

iconv = Iconv.new('EUC-JP', 'UTF-8') # UTF-8 から EUC へ変換
str = iconv.conv(utf8)
puts str #=> "あいうえお"
discard_ilseq=(bool)

文字列の変換時に Iconv::IllegalSequence が発生するような文字列が 途中にあった場合でも無視して変換を継続するかどうかを指定します。

[PARAM] bool:
真を指定した場合は Iconv::IllegalSequence を無視します。
[EXCEPTION] NotImplementedError:
実行プラットフォームでサポートされていない場 合に発生します。
discard_ilseq? -> bool

文字列の変換時に Iconv::IllegalSequence が発生するような文字列が 途中にあった場合でも無視して変換を継続するかどうかを返します。

[EXCEPTION] NotImplementedError:
実行プラットフォームでサポートされていない場 合に発生します。
iconv(str, start = 0, length = -1) -> String

文字列の変換を開始し、変換後の文字列を返します。 str が文字列の場合、str[start, length] を変換し、 変換後の文字列を返します。

str が nil の場合、変換器をその初期シフト状態にし、 出力バッファを初期シフト状態に戻すためのバイト列からなる文字列を返します。 出力の文字符号化方式が内部状態をも持たない場合、空文字列を返します。

[PARAM] str:
変換される文字列または nil を指定します。
[PARAM] start:
str のうち変換を開始するオフセットを指定します。
[PARAM] length:
str のうち変換する長さを指定します。nil か -1 のときは、start 以降全部を意味します。
[EXCEPTION] Iconv::IllegalSequence:
strに指定された文字列に入力に指示された文字コードに含まれないために変換が停止した場合に発生します。
[EXCEPTION] Iconv::InvalidCharacter:
入力の最後が不完全な文字かシフトで終っているために変換が停止した場合に発生します。
[EXCEPTION] Iconv::OutOfRange:
ライブラリの内部エラーが発生した場合に発生します。
transliterate=(bool)

文字列の変換時に、表現できない文字を同じ見た目の文字に"翻訳"するかどう かを指定します。

[PARAM] bool:
真を指定した場合は表現できない文字を同じ見た目の文字に"翻訳"します。
[EXCEPTION] NotImplementedError:
実行プラットフォームでサポートされていない場 合に発生します。
transliterate? -> bool

文字列の変換時に、表現できない文字を同じ見た目の文字に"翻訳"するかどう かを返します。

[EXCEPTION] NotImplementedError:
実行プラットフォームでサポートされていない場 合に発生します。
trivial? -> bool

変換前の文字コードと、変換先の文字コードがそれぞれの文字を 1 対 1 に変 換可能なエンコーディングの組み合わせであった場合に true を返します。

[EXCEPTION] NotImplementedError:
実行プラットフォームでサポートされていない場 合に発生します。
class Iconv