成瀬です。

sheepman wrote:
> ISO-2022-JP な文字列と EUC-JP な文字列が compatible と
> なりますがこれは意図されたことでしょうか。
> 
> dummy エンコーディングだとこういう風になるものなのでしょうか。
> 
> $ cat t.rb
> #-*- coding: euc-jp -*-
> s = "漢字"
> i = "漢字".encode("ISO-2022-JP")
> p Encoding.compatible?(s, i)
> p s + i
> 
> $ ruby-1.9 -v t.rb
> ruby 1.9.0 (2008-01-13 revision 0) [i686-linux]
> #<Encoding:EUC-JP>
> "漢字\e$B4A;z\e(B"

dummy encoding だからではなく、"\e$B4A;z\e(B" が 7bit ASCII の範囲に収
まっているからですね (rb_enc_str_asciionly_p)。ISO-2022-JP は常に 7bit
なので EUC-JP だけでなく、Shift_JIS とも UTF-8 とも compatible になります。

これどうしましょうか。ESC/SI/SO があったらダメとかでしょうかねぇ・・・。

-- 
NARUSE, Yui  <naruse / airemix.com>
DBDB A476 FDBD 9450 02CD 0EFC BCE3 C388 472E C1EA