SableVMで日本語エンコーディング(Shift-JIS,Windows-31J,EUC-JP)を使用する
Armadillo-9へあるJavaアプリケーションの移植をしています。
このアプリケーションの機能としてcsvファイルの読込があるのですが、Armadillo-9上で読込をすると
Charset MS932 not found
と表示されてうまく読み込めない。
どうやら日本語のエンコーディングに対応していないようだ。
ネットで調べるとSableVMの日本語エンコーディングの対応方法があった。
SableVMで日本語Encoding(Windows-31J)の追加方法
今回のcsvファイルはWindowsXPのExcelで作成(MS932、Windows-31Jともいう)したため3.の方法を試してみる。
以下引用
3.Windows-31Jを使用する
iconvでは利用可能ですが、SableVMのIconvProviderがサポートしていないため、java標準のAPIとして用意されているCharsetProviderを使用してWindows-31Jが利用可能になるようにします。用意の方法はJ2SEのAPIリファレンスを参考にしてください。下記の手順を行えば簡単にできます。
Windows-31JのEncoding実装をゼロから行うのは大変なのでGNUライブラリのIconvProvider経由でiconvを利用する方法を取りました。
具体的な追加方法は
1.標準javaの
/usr/lib/fjsdk/jre/lib/extの変わりとなる
SableVMの
/usr/lib/sablevm/jre/lib/extディレクトリを作成
2.wgetコマンドで
http://osdn.dl.sourceforge.jp/jeextension/25691/gnu-charset-ja-jp-1.0.2.jar
をゲット
3.2.でゲットしたgnu-charset-ja-jp-1.0.2.jarを1.で作成したextディレクトリにコピー
これで無事にMS932で作成されたcsvファイルを読み込むことができました!