Experience Prototypistのマルチリンガル子育て+プログラミングブログ

Design Thinking、語学(英語、中国語、韓国語)、日中マルチリンガル育児、littleBitsやRaspberry Pi, Arduinoを使ったExperience Prototypingネタ。

MeCabのJavaバインディングをWindowsで使う



日本語の形態素解析MeCab(http://chasen.org/~taku/software/mecab/)のJavaバインディングWindowsから使ってみた。

Windows上ではUTF-8版の辞書がビルドできないため、先日インストールしたcoLinux上のDebianで辞書はビルドして、Windowsに持ってきておく。一方、Windows上ではMakefileを書き換えて、JNIインタフェース部分(JARファイル)、JNIから呼び出されるネイティブ部分(DLLファイル)、およびサンプルアプリケーション(EXEファイル)のそれぞれをビルドする。

出来上がったサンプルアプリを実行すると、品詞等の情報は正しく出力されるものの、分かち書きされた結果が文字化けしている。これはどうしたことかと思いきや(2回ほど辞書をリビルドした後で)、サンプルアプリのソースコードエンコーディングEUCだったという落ちでした(Windows上でエディタで見る分にはエンコーディングが自動選択されてしまうので、文字化けしていない)。つまり、Windows上でjavacでコンパイルする際はソースコードをShiftJISで見ているので、ソースコード中にハードコードされた入力文字列が文字化けした状態でMeCabに渡っていたとさ。ちゃんちゃん。