ひでっぷの技術メモ

はてなダイアリーから移行しました

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が利用可能になるようにします。用意の方法はJ2SEAPIリファレンスを参考にしてください。下記の手順を行えば簡単にできます。
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ファイルを読み込むことができました!