問題となったコードを再び掲載しておく
p Dir.glob('/test2/*')
p Dir.glob('/test/*')
この2行目で日本語文字列を読み込み例外を起こしていたが、-Ks をコマンドラインオプションにつけ実行することで動作可能のようだ。
改めて実行結果を表示しておく。
よく考えると、この挙動は正しいような気がしてきた。-KでOSのエンコーディングを指定したと考える場合である。(ただ -Ks は Rubyがスクリプトなどを解釈したりするとき、文字列をどのようなエンコーディングされているかを識別するかを指定しているので、正しくはない)。もちろん -K で十分かというと不十分であり、それが1.9.1等では対処されていると考えるのが正しいかもしれない。
例えば ruby を 使って WEB アプリケーションを実装することを考えてみる。生成するhtmlは、様々な事を考慮すると UTF-8 で出力したくなると考えられる。そうすると -Ku を指定するのが妥当のように考える。しかし、ファイルシステム等が UTF-8でない場合、その点を考慮する必要がある。
一般的に作成するアプリケーション全体をunicode only な考え方で作りこむのであれば、OSや入力フォーム、DBから返却された文字などを unicode にする。またOS、出力(HTML等)、DBへの書き込みを適切な文字コードへ変換するという考え方が出来る。(Unicode統一と考えたときである)
しかしrubyはCSI(Code Set Independent)な考え方から、各文字列バッファにどのようなエンコーディングか指定するようになっている。
上記を踏まえ-K オプションはいったいどのような目的なのか調査の必要があるが、それを踏まえ、IronRubyはどのような思想なのか解明の必要があると考える。
詳しくは、もちょっと続けようかと思う。



コメントする