「$KCODE」に直接設定する場合の注意点
実はコマンドラインオプションなどで文字コードを指定する他に、グローバル変数「$KCODE」に直接値を設定することも可能です。
$KCODE = "u";
上記では$KCODEにUTF-8を表す「u」を設定しています。また設定する値は1バイト目だけが有効となるので、次のように記述しても同じ結果となります。
$KCODE = "utf-8";
「$KCODE」への値の設定は、上記のプログラムが実際に実行されてから有効となります。
では次のようなプログラムで試してみます。
$KCODE = "Shift-JIS" print("KCODE=", $KCODE,"¥n") print("日本語を表示")
上記のプログラムを「test4-1.rb」として保存します。文字コードはShift_JISです。そして下記のように実行して下さい。
「$KCODE」の値は指定したShift_JISに設定されていますが日本語の出力は文字化けしています。
これはプログラムの中に直接記述された日本語はプログラムの実行前に解釈されているためです。コマンドラインオプションで指定しなければ文字コードはデフォルトの「NONE」ですので文字化けしてしまいます。
このように「$KCODE」の設定を変更する場合は、どこから設定が反映されるのかについて注意する必要があります。
( Written by Tatsuo Ikura )