こんにちは、なかむら(う)です。

というわけで、まつもとさんの意見を踏まえて、以下の仕様で実装
に反映しました。
あと、書き忘れてましたが、[ruby-dev:33156]で指摘されていた-K
のライブラリへの伝播も、なかださんがr15231で対応済みです。

US-ASCIIじゃまずいんじゃないか、という件は、どれくらいの人が
「ぎゃっ」というか見てみた方がいい気もするので、1.9.0-1リリー
スに入れてみるのがいいんじゃないかと思います。
# 1.9.0-1ってそう遠くない未来に出るんですよね?


通常のスクリプトの場合        | script encoding | default external |
------------------------------+-----------------+------------------+
-K・-Eなし、magic commentなし | US-ASCII        | locale           |
-K・-Eなし、magic commentあり | magic comment   | locale           |
-Eあり、magic commentなし     | US-ASCII        | -E               |
-Eあり、magic commentあり     | magic comment   | -E               |
-Kあり、magic commentなし     | -K              | -K               |
-Kあり、magic commentあり     | magic comment   | -K               |


-eおよびstdinの場合           | script encoding | default external |
------------------------------+-----------------+------------------+
-K・-Eなし、magic commentなし | locale          | locale           |
-K・-Eなし、magic commentあり | magic comment   | locale           |
-Eあり、magic commentなし     | locale          | -E               |
-Eあり、magic commentあり     | magic comment   | -E               |
-Kあり、magic commentなし     | -K              | -K               |
-Kあり、magic commentあり     | magic comment   | -K               |


1.8からのscript encodingに関する非互換まとめ

* -Kがない場合、1.8では1.9のASCII-8BIT相当の挙動だったが、1.9
  ではUS-ASCIIとして扱われる。
  よって、-Kなしでリテラル中に他バイト文字が含まれている場合、
  1.8ではencodingと運によっては大丈夫だったものが、1.9では必
  ずパース時にエラーが発生するようになる。

* magic commentがあった場合、1.8では無視されるが、1.9ではそれ
  がscript encodingに反映される。-Kよりも優先。

* 上記の表にはないが、コマンドラインオプション・RUBYOPT・shebang
  の間の優先順位が1.9では変更されている。
  よって、それぞれに矛盾する-K指定が存在した場合、1.8とは異な
  る優先順位でscript encodingが決定される。
  具体的には以下の通り(左が優先)
    1.8 : shebang > RUBYOPT > コマンドライン
    1.9 : コマンドライン > RUBYOPT > shebang


それでは。
-- 
U.Nakamura <usa / garbagecollect.jp>