ScriptEncodingJa » History » Version 2

« Previous - Version 2/18 (diff) - Next » - Current version
Yuki Sonoda, 06/06/2008 01:03 PM


= Script Encoding Summary
[]より転載。

通常のスクリプトの場合 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