Ruby 1.9.2 リファレンスマニュアル > ライブラリ一覧 > 組み込みライブラリ > Encodingクラス

class Encoding

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

Abstract

文字エンコーディング(文字符号化方式)のクラスです。Rubyの多言語対応(M17N)機能において利用されます。

例えば文字列オブジェクトは、文字列のバイト表現の他にそのバイト表現がどのエンコーディングによるものであるかも併せて保持しています。この情報は String#encoding により取得できます。 Encoding オブジェクトを返すメソッドにはこの他に IO#internal_encoding, IO#external_encoding などがあります。

@see 多言語化

特異メソッド

aliases -> Hash

エンコーディングの別名に対して元の名前を対応づけるハッシュを返します。

例:

p Encoding.aliases
#=> {"BINARY"=>"ASCII-8BIT", "ASCII"=>"US-ASCII", "ANSI_X3.4-1986"=>"US-ASCII",
    "SJIS"=>"Shift_JIS", "eucJP"=>"EUC-JP", "CP932"=>"Windows-31J"}
compatible?(str1, str2) -> Encoding | nil
compatible?(enc1, enc2) -> Encoding | nil

2つの文字列に互換性があるかどうかをチェックします。互換性がある文字列は 結合させることができます。互換性があるときは、結合後の文字列が取るであ ろう Encoding オブジェクトを返します。互換性がない場合は nil を返します。

[PARAM] str1:
チェックする対象の文字列を指定します。
[PARAM] str2:
チェックする対象の文字列を指定します。
[RETURN]
結合した場合の文字列の Encoding または nil
default_external -> Encoding

規定の外部エンコーディングを返します。

入出力において、外部エンコーディングが指定されていない場合の規定値として利用されます。Rubyはロケールまたは -E オプションに従って default_external を決定します。ロケールの確認・設定方法については各システムのマニュアルを参照してください。

default_external は必ず設定されます。Encoding.locale_charmap が nil を返す場合には US-ASCII が、 ロケールにRubyが扱えないエンコーディングが指定されている場合には ASCII-8BIT が、default_external に設定されます。

[SEE_ALSO] locale(1), Encoding.locale_charmap

default_external=(encoding) -> Encoding

規定の外部エンコーディングを設定します。

default_internal -> Encoding | nil

規定の内部エンコーディングを返します。

default_internal=(encoding) -> Encoding

規定の内部エンコーディングを設定します。

find(name) -> Encoding

指定された name という名前を持つ Encoding オブジェクトを返します。

[PARAM] name:
エンコーディング名を表す StringSymbol を指定します。
[RETURN]
発見された Encoding オブジェクトを返します。
[EXCEPTION] ArgumentError:
指定した名前のエンコーディングが発見できないと発生します。

特殊なエンコーディング名として、ロケールエンコーディングを表す locale、default_external を表す external、default_internal を表す internal があります。

例:

p Encoding.find(:Shift_JIS)    #=> #<Encoding:Shift_JIS>
p Encoding.find("utf-8")       #=> #<Encoding:UTF-8>
list -> [Encoding]

現在ロードされているエンコーディングのリストを返します。

例:

Encoding.list
=> [#<Encoding:ASCII-8BIT>, #<Encoding:EUC-JP>,
    #<Encoding:Shift_JIS>, #<Encoding:UTF-8>,
    #<Encoding:ISO-2022-JP (dummy)>]

Encoding.find("US-ASCII")
=> #<Encoding:US-ASCII>

Encoding.list
=> [#<Encoding:ASCII-8BIT>, #<Encoding:EUC-JP>,
    #<Encoding:Shift_JIS>, #<Encoding:UTF-8>,
    #<Encoding:US-ASCII>, #<Encoding:ISO-2022-JP (dummy)>]
locale_charmap -> String | nil

ロケールエンコーディングを決定するために用いる、locale charmap 名を返します。nl_langinfo 等がない環境では nil を、miniruby では ASCII_8BIT を返します。

Debian GNU/Linux
  LANG=C
    Encoding.locale_charmap  => "ANSI_X3.4-1968"
LANG=ja_JP.EUC-JP
    Encoding.locale_charmap  => "EUC-JP"

SunOS 5
  LANG=C
    Encoding.locale_charmap  => "646"
  LANG=ja
    Encoding.locale_charmap  => "eucJP"

[SEE_ALSO] charmap(5)

name_list -> [String]

利用可能なエンコーディングの名前を文字列の配列で返します。

このリストにはダミーエンコーディングは含みません。

例:

p Encoding.name_list
#=> ["US-ASCII", "ASCII-8BIT", "UTF-8",
     "ISO-8859-1", "Shift_JIS", "EUC-JP",
     "Windows-31J",
     "BINARY", "CP932", "eucJP"]

インスタンスメソッド

dummy? -> bool

自身がダミーエンコーディングである場合に true を返します。 そうでない場合に false を返します。

ダミーエンコーディングとは Ruby が名前を知っているものの実質的には対応していないエンコーディングのことです。例えば、ダミーエンコーディングで符号化された文字列の場合、 String#length はマルチバイト文字を考慮せずにバイト列の長さを返します。

ダミーエンコーディングも IO の外部エンコーディングに指定できます。また Ruby はサポートしていないが拡張ライブラリがサポートしているエンコーディングを扱う場合にも 用います。

例:

Encoding::ISO_2022_JP.dummy?       #=> true
Encoding::UTF_8.dummy?             #=> false
inspect -> String

プログラマにわかりやすい表現の文字列を返します。

例:

Encoding::UTF_8.inspect       #=> "#<Encoding:UTF-8>"
Encoding::ISO_2022_JP.inspect #=> "#<Encoding:ISO-2022-JP (dummy)>"
name -> String
to_s -> String

エンコーディングの名前を返します。

Encoding::UTF_8.name       => "UTF-8"
names -> String

エンコーディングの名前とエイリアス名の配列を返します。

Encoding::UTF_8.names      => ["UTF-8", "CP65001"]

定数

US_ASCII
ASCII
ANSI_X3_4_1968

ASCII文字のみのエンコーディングです。通常の ASCII 文字の範囲外のバイト (たとえば\x80など)が含まれる場合は正しいエンコーディングであるとみなし ません。

ASCII_8BIT
BINARY

変換を行わないエンコーディングオブジェクトです。

文字エンコーディングを持たないデータ、文字を符号化したのではない単なるバイトの列を表現するためにも用います。

Big5
BIG5
CP950
Windows_1250
CP1250
WINDOWS_1250
Windows_1251
CP1251
WINDOWS_1251
Windows_1252
CP1252
WINDOWS_1252
Windows_1253
CP1253
WINDOWS_1253
Windows_1254
CP1254
WINDOWS_1254
Windows_1255
CP1255
WINDOWS_1255
Windows_1256
CP1256
WINDOWS_1256
Windows_1257
CP1257
WINDOWS_1257
Windows_1258
CP1258
WINDOWS_1258
IBM437
CP437
CP51932
IBM737
CP737
IBM775
CP775
CP850
IBM850
CP852
CP855
IBM857
CP857
IBM860
CP860
IBM861
CP861
IBM862
CP862
IBM863
CP863
IBM864
CP864
IBM865
CP865
IBM866
CP866
IBM869
CP869
Windows_874
CP874
WINDOWS_874
Windows_31J
CP932
CSWINDOWS31J
CsWindows31J
WINDOWS_31J
CP936
CP949
EUCCN
EucCN
EUC_JP
EUC_JP_MS
EucJP
EUCJP

EUC-JP エンコーディングです。

EucJP_ms
EUCJP_MS
EUC_KR
EUCKR
EucKR
EUC_TW
EUCTW
EucTW
GB18030
GB1988
GBK
WINDOWS_936
Windows_936
IBM852
IBM855
ISO_2022_JP
ISO2022_JP

ISO-2022-JP エンコーディングです。

ISO_2022_JP_2
ISO2022_JP2
ISO_8859_1
ISO8859_1

ISO-8859-1 エンコーディングです。

ISO_8859_10
ISO8859_10
ISO_8859_11
ISO8859_11
ISO_8859_13
ISO8859_13
ISO_8859_14
ISO8859_14
ISO_8859_15
ISO8859_15
ISO_8859_16
ISO8859_16
ISO_8859_2
ISO8859_2
ISO_8859_3
ISO8859_3
ISO_8859_4
ISO8859_4
ISO_8859_5
ISO8859_5
ISO_8859_6
ISO8859_6
ISO_8859_7
ISO8859_7
ISO_8859_8
ISO8859_8
ISO_8859_9
ISO8859_9
KOI8_R
KOI8_U
MacCentEuro
MACCENTEURO
MacCroatian
MACCROATIAN
MacCyrillic
MACCYRILLIC
MacGreek
MACGREEK
MacIceland
MACICELAND
MacJapanese
MACJAPAN
MACJAPANESE
MacJapan
MacRoman
MACROMAN
MacRomania
MACROMANIA
MacThai
MACTHAI
MacTurkish
MACTURKISH
MacUkraine
MACUKRAINE
SHIFT_JIS
Shift_JIS
SJIS

Shift_JIS エンコーディングです。

TIS_620
UTF_16BE

UTF-16BE (ビッグエンディアン)エンコーディングです。

UTF_16LE

UTF-16LE (リトルエンディアン)エンコーディングです。

UTF_32BE

UTF-32BE (ビッグエンディアン)エンコーディングです。

UTF_32LE

UTF-32LE (リトルエンディアン)エンコーディングです。

UTF_8

UTF-8 エンコーディングです。

Methods

Classes