コマンドラインオプションで文字コードの指定

広告

コマンドラインオプションを指定すればプログラムが読み込まれる前に文字コードを設定できますが、コマンドラインオプションで指定して実行することを覚えておかなければなりません。そこで、プログラムの先頭に次のような記述を行うことでコマンドラインオプションで指定した場合とまったく同じ結果を得ることができます。

#! ruby -K[kcode]

[kcode]の部分はコマンドラインオプションの場合とまったく同じです。例えばShift_JISに設定する場合は次のようになります。

#! ruby -Ks

本来「#」以降は行末までがコメントとして扱われますが、プログラムの先頭行が「#!」で始まる文字列であり、その後に「ruby」と書かれた文字が含まれた場合には、その右側に「-」で始まる文字があった場合にコマンドラインオプションとして扱ってくれます。(先頭行以外では効果がありません)。

それでは再度「$KCODE」の値を出力するだけの簡単なサンプルを試してみます。

test3-1.rb

#! ruby -Ku
print("KCODE=", $KCODE);

上記のプログラムを実行してみます。

オプション指定をプログラム内に記述

先頭行で指定したオプションの値に従って「$KCODE」の値が設定されています。

それでは日本語を含むプログラムを試してみます。

test3-2.rb

#! ruby -Ks
print("日本語を表示");

上記のプログラムを「test3-2.rb」として保存します。文字コードはShift_JISです。そして下記のように実行して下さい。

オプション指定をプログラム内に記述

コマンドラインオプションで指定した場合と同じく文字化けせずに実行できました。

( Written by Tatsuo Ikura )