ITコンサルの日常

ITコンサル会社に勤務する普通のITエンジニアの日常です。

日本語文字列の長さ

たのしいRuby第二版のp219

p 'オブジェクト指向プログラミング言語'.length

p 'オブジェクト指向プログラミング言語'.size

p 'オブジェクト指向プログラミング言語'.split(//s).size

のプログラムですが、そのまま実行するとエラーになります。

>ruby p219-1.rb
34
34
p219-1.rb:5:in `split': incompatible encoding regexp match (Shift_JIS regexp wit
h ASCII-8BIT string) (ArgumentError)
        from p219-1.rb:5:in `<main>'

>

が、-Ksを付けて実行すると、全て17で返ってきます。

>ruby -Ks p219-1.rb
17
17
17
>

-Ksを付けた場合はともかく、エラーになっちゃうのは困るような気がします。(ちゃんと例外捕捉しなさいよということか?)