この違いはとても大きいです。Ruby 1.9 では日本語の1文字を1文字として扱いますが、Ruby 1.8 ではそうはいきません。 Ruby 1.8 では同じ日本語でも、それを構成しているバイトコードの中身まで見えてしまうのです。 同じ日本語でもエンコードの方法によっては違うバイトコードの並びになります。 その中には今回区切り文字や囲み文字として採用したカンマ(,)やダブルクオーテーション(")に該当してしまうものが存在するかもしれません。 かといって、Ruby 1.8 でエンコードを意識して文字単位で処理をするのはとても難しいような気がします。 少なくとも、僕が持っている文字コードの知識にそんなものはありません。処理系がやってくれているからできることであり、自分で実装するとなるとどれほどの労力がかかることやら…という感じです。 しかし、この問題を解決するのが UTF-8 というエンコード
![Ruby 1.8 と 1.9 の両方で動作する簡易 CSV 形式データ処理を考える。 - 自分の歩いた道に落ちてるコード](https://cdn-ak-scissors.b.st-hatena.com/image/square/5315811a009bda5ec893b25eae5102454aa9683b/height=288;version=1;width=512/http%3A%2F%2Fwww.ownway.info%2FMovableType%2FMT-6.1%2Fmt-static%2Fsupport%2Ftheme_static%2Frainier%2Fimg%2Fsiteicon-sample.png)