作者: Yukihiro Matsumoto
日時: 2005/9/06(23:48)
まつもと ゆきひろです

In message "Re: [TSruby:170] 日本語を含む文字列の操作について確認"
    on Tue,  6 Sep 2005 19:04:58 +0900 (JST), wtnabe@... (ねこ丸) writes:

|  Ruby でのマルチバイト文字を含む文字列処理について自分の理解を確認さ
|せてください。
|
|- まずマルチバイト文字をそのままスクリプト中に書く場合、$KCODE が指定
|  されていないと sjis の2バイト目などの問題が起きる。逆に言うと指定さ
|  れていれば単純な問題は起きない。

$KCODEは実行時の値なので、スクリプトに文字列を書くときには手
遅れです。ですからsjisにおける

  a = "表"

などの問題を避けるためには

  * スクリプトに -Ks を指定する
  * スクリプトの2行目以降に「# -*- coding: sjis -*-」を置く
    (Ruby 1.9の機能)

などコンパイル前に指定する必要があります。

|- $KCODE が指定されていると正規表現リテラルの中でマルチバイト文字列を
|  書いても正常に扱われる。指定していなくても、Regexp.new() の第3引数で
|  文字コードを指定すれば、正規表現リテラルではないが正規表現オブジェク
|  トとして正常に扱われる。

これも同じです。