Ruby 1.9.2 リファレンスマニュアル > ライブラリ一覧 > library iconv

library iconv

要約

Iconv は UNIX 95 の iconv() 関数のラッパーで、 さまざまな文字コード体系間で文字列の変換を行ないます。

詳細は http://www.opengroup.org/ のオンラインドキュメントを 参照して下さい。

注意

どの文字コード体系が利用できるかはプラットフォーム依存です。さらに文字コード体系をあらわす文字列もプラットフォーム依存です。日本語 EUC をあらわす文字列が EUC-JP, euc-jp, eucJP など異なる場合があります。このプラットフォームによる違いを吸収するために、 「ext/iconv/charset_alias.rb」 が用意されています。 GNU ソフトウェア texinfo (http://www.gnu.org/software/texinfo/) に含まれるファイル config.charset を以下のミラーサイトから手に入れて

ext/iconv/ に置き、ext/iconv/ で次のように実行すると

ruby extconf.rb
make

iconv.rb が生成されます。この iconv.rb がプラットフォームによる文字コード体系をあらわす文字列の違いを吸収します。

config.charset のライセンスは LGPL なので、生成された iconv.rb にも LGPL が適用されます。

require 'iconv'
euc = ["a4a2a4a4a4a6a4a8a4aa"].pack("H*") # あいうえお
sjis = ["82a082a282a482a682a8"].pack("H*")
iconv = Iconv.new('SHIFT_JIS', 'EUC-JP')  # EUC-JP から SHIFT_JIS へ変換
str = iconv.iconv(euc)
str << iconv.iconv(nil)
p( str == sjis )

(1) 新しく Iconv のインスタンスを作り, Iconv#iconv メソッドを使う

cd = Iconv.new(to, from)
begin
  input.each {|s| output << cd.iconv(s)}
  output << cd.iconv(nil)      # don't forget this
ensure
  cd.close
end

(2) Iconv.open をブロックつきで呼び出す

Iconv.open(to, from) do |cd|
  input.each {|s| output << cd.iconv(s)}
  output << cd.iconv(nil)
end

(3) (2) の短縮系

Iconv.iconv(to, from, *input.to_a)

参考

クラスとモジュール

class Iconv

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

module Iconv::Failure

Iconv が起こす例外のためのモジュールです。

例外クラス

class Iconv::BrokenLibrary

iconv ライブラリのバグなどにより、errno が設定されなかった場合に発生します。 (Windows で iconv.dll の使用する MSVC runtime DLL のバージョンが、ruby 本体が使用するものと一致していない場合も含みます。)

class Iconv::IllegalSequence

入力か出力の文字が指示された文字集合に含まれないために変換が停止したこと を表します。

class Iconv::InvalidCharacter

入力の最後が不完全な文字かシフトで終っているために変換が停止したこと を表します。

class Iconv::InvalidEncoding

メソッドの引数等で指定された文字コード体系が見つからない (システム上で有効でない) 場合に発生します。

class Iconv::OutOfRange

Iconv ライブラリの内部エラーです。この例外は起こらないはずです。

Classes

Sublibraries