「初めてのRuby」を読むの続き
4章 文字列
4.9 Ruby1.8とマルチバイト文字
から
※注意!1.8です。1.9は、明日。
■4.9.1 文字列=バイト列
・Ruby1.8までは、文字列は、単なるバイト列
→エンコーディングを認識しない
→Stringのlengthメソッドは、バイト長を課閲す
→StringのupcaseはASCIIの範囲のみ、大文字にする
・でも、一部の機能は日本語対応
→$KCODE対応メソッドと正規表現処理の2つ
■4.9.2 $KCODE対応メソッド
・一部のメソッドは「規定のエンコーディング」に従って、処理を変える
→Stringのinspectメソッド:「規定のエンコーディング」で解釈、表示
・$KCODE:「規定のエンコーディング」を保持するグローバル変数
■4.9.3 正規表現
・正規表現は、日本語によく対応
→ . は1バイトでなく、1文字に対応
・scanメソッド
→正規表現にマッチする部分文字列があると、ブロックを繰り返す
→生成時のオプションn,s,e,uが指定されていれば、それに
指定されていなければ、$KCODEに従って処理する
■4.9.4 文字列の同値性
・文字列の大小は、単純に先頭から1バイトづつ比較
→エンコーディングは関知しない
→文字列は同じでも、エンコーディングが違えば違う文字
■4.9.5 多言語対応
・$KCODEによって処理系のモードを切り替え
→複数のエンコーディングが混在する場合は向いていない
→他のスレッドが$KCODEを書き換えると、予期せぬ状況に
・Ruby1.8で国際化、多言語対応:UTF-8を仕様
次回は、1.9のマルチバイト処理