kind=defined
names=-K,KCODE
visibility=public

--- $KCODE -> String
--- $-K    -> String

Ruby の認識するマルチバイト文字列エンコーディングです。
変数の値は "EUC" "SJIS" "UTF8" "NONE" のいずれかの文字列です。


$KCODE の値が "EUC" のときは文字列や正規表現の
エンコーディングが EUC-JP であると仮定します。
同様に "SJIS" のときは Shift JIS を仮定します。
"UTF8" のときは UTF-8 を仮定します。
"NONE" のときはマルチバイト文字列を認識しません。

代入するときには値の最初の 1 バイトしか意味がなく、
また大文字小文字の違いも無視されます。すなわち、
"e" "E" は "EUC"、"s" "S" は "SJIS"、
"u" "U" は "UTF8"、"n" "N" は "NONE" に展開されます。

デフォルト値は "NONE" です。

[参考]

現在の実装では $KCODE は Ruby の以下の動作に影響します。

  * インタプリタの字句解析器
  * [[c:Regexp]] のエンコーディングフラグのデフォルト値
  * [[ref:d:spec/literal#regexp]]
  * [[m:Regexp.new]]
  * [[m:String#upcase]]
  * [[m:String#downcase]]
  * [[m:String#swapcase]]
  * [[m:String#capitalize]]
  * [[m:String#inspect]]
  * [[m:String#split]]
  * [[m:String#gsub]]
  * [[m:String#scan]]

$KCODE はグローバルスコープです。

@see [[d:spec/rubycmd]]


