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

singleton method Encoding.compatible?

compatible?(obj1, obj2) -> Encoding | nil[permalink][rdoc]

2つのオブジェクトのエンコーディングに関する互換性をチェックします。 互換性がある場合はそのエンコーディングを、 ない場合は nil を返します。

引数が両方とも文字列である場合、互換性があるならば その文字列を結合できます。この場合返り値のエンコーディングは 結合した文字列が取るであろう Encoding オブジェクトを返します。

Encoding.compatible?("\xa1".force_encoding("iso-8859-1"), "b")
#=> #<Encoding:ISO-8859-1>

Encoding.compatible?(
  "\xa1".force_encoding("iso-8859-1"),
  "\xa1\xa1".force_encoding("euc-jp"))
#=> nil

引数が文字列でない場合でも、両方のオブジェクトが encoding を持つ場合には 互換性を判定することができます。

Encoding.compatible?(Encoding::UTF_8, Encoding::CP932)
# => nil
Encoding.compatible?(Encoding::UTF_8, Encoding::US_ASCII)
# => #<Encoding:UTF-8>
[PARAM] obj1:
チェック対象のオブジェクト
[PARAM] obj2:
チェック対象のオブジェクト