Ruby 1.9.2 リファレンスマニュアル > ライブラリ一覧 > library iconv
library iconv
要約
Iconv は UNIX 95 の iconv() 関数のラッパーで、 さまざまな文字コード体系間で文字列の変換を行ないます。
詳細は http://www.opengroup.org/ のオンラインドキュメントを 参照して下さい。
- iconv(3)
- iconv_open(3)
- iconv_close(3)
- http://www.opengroup.org/onlinepubs/009695399/basedefs/iconv.h.html
注意
どの文字コード体系が利用できるかはプラットフォーム依存です。さらに文字コード体系をあらわす文字列もプラットフォーム依存です。日本語 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)
参考
- 標準添付ライブラリ紹介【第 3 回】 Kconv/NKF/Iconv (http://jp.rubyist.net/magazine/?0009-BundledLibraries#l30)
クラスとモジュール
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 ライブラリの内部エラーです。この例外は起こらないはずです。 |