MeCab試験養殖中 その2
検索しているうちに SQLite3 とかでも ASCII-8bit で返ってきてしまって不便だといったものが見つかった。
[ Rubyのsqlite3-rubyは必ず文字コードASCII-8BITとして返す - Rubyで遊ぶよ - Rubyist ]
実際化けてしまうけれど処理そのものは MeCab でもできているようなので、force_encoding してみたら確かに正しく表示できたのを確認。
ということは MeCab 側ではバイト列として処理していて、Ruby1.8 系ではそもそも文字列をバイト列として処理していたので問題なかったけれど、1.9 系では文字列そのものとして処理している(?)といったことらしいので、そのあたりがうまくいかずにおかしなことになってしまうのかもしれない。
本来ならバインディングのところでそのあたりを吸収すべく処理するべきなのだろうけれど、それができてないってことなのかな?
やや強引に作ってみた MeCab.so でもとりあえず使えているようなので(force_encoding なのでお行儀としてはよくないのだろうけれど、このあたりのことはちょっと手が出ないので)ひとまずこれで少し使ってみることにする。
| 固定リンク
コメント