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

広告

文字コードを設定するには、二つの方法があります。まずはコマンドラインオプションで文字コードを指定する方法です。

Rubyのプログラムを実行する時に次のようにオプションを指定します。

ruby -K[kcode] プログラムファイル名

[kcode]の部分に文字コードに対応した値を設定します。設定可能な値は次の通りです。

kcode文字コード
s or SShift_JIS
e or EEUC-JP
u or UUTF-8
n or NNONE(ASCII)

例えば文字コードにShift_JISを設定する場合には「s」または「S」を指定します。大文字と小文字のどちらでも同じです。

ruby -Ks プログラムファイル名
ruby -Ke プログラムファイル名
ruby -Ku プログラムファイル名
ruby -Kn プログラムファイル名

コマンドラインオプションで指定した値によって、グローバル変数「$KCODE」に値が設定されます。この値の設定はプログラムが読み込まれる前に設定されますので、プログラムの中で記述された文字列も指定された文字コードで書かれたものと識別されます。

それでは再度「$KCODE」の値を出力するだけの簡単なサンプルを、コマンドラインオプションを変更しながら実行してみます。

test2-1.rb

print("KCODE=", $KCODE);

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

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

コマンドラインオプションで指定した値によって、「$KCODE」の値が変更されています。

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

test2-2.rb

print("日本語を表示");

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

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

今度は文字化けせずに実行できました。

( Written by Tatsuo Ikura )