久々に ruby を弄る

ちょっとしたテキスト処理の為に久々に Ruby を弄った。
1.9系列というのがリリースされてて、変なグローバル変数が減ったり洗練されたようだ。


ただちょっと気になるのが文字列のエンコーディングのあたり。
Ruby の文字列はどうやら単純なバイト配列と、エンコーディングが何なのかの情報を持っているっぽいように見えるんだけど、この対応が間違ってる状態が簡単に発生してしまう。
例えば open() したファイルに read() した戻り値とか、バイト配列に収まってるのは実は UTF-8エンコードされた文字列だったりするんだけど、そのままだと恐らく実行システムのディフォルト文字列(今回の環境だと Windows-31J だった)だという間違ったエンコーディング情報が結び付けられてる。
きっとなんかもっと上手い方法があるんだと思うけど、NKF.guess() の結果に従って String#force_encoding() で設定したらとりあえず回避はできた。


こういう適当な回避方法を書き連ねていくと、簡素なはずスクリプトが結局汚い処理で長くなっていく。
かといって細かいノウハウだらけなのがスクリプト言語の常であって、そういうのを山ほど覚えるほど暇じゃない。
そこら辺が片手間スクリプト言語使いのジレンマと言えるかもしれない。


※後日追記
この Ruby 1.9 の文字列をどう扱えば良いのかについては
http://d.hatena.ne.jp/Gimite/20080101/1199199332
http://d.hatena.ne.jp/macks/20080102/
ここら辺の方が言及されているのを見つけました。
きっとちゃんと読めば俺みたいに愚かなコードを書かずに済むはず--;