大きな csv ファイルを gb2312 エンコーディングから UTF-8 エンコーディングに変換したいと考えています。使用したコードは次のとおりです。
Process process = Runtime.getRuntime().exec(
String.format("iconv -c -f %1$s -t %2$s %3$s > %4$s",
sourceEncoding, targetEncoding, source, target));
process.waitFor();
問題は、 process.waitFor() メソッドが終了しないことです。コマンドラインから呼び出して引数を与えないように、iconvが私の入力を待っているようです。しかし、ターミナルの別のセッションから。正しいパラメーターで実行されている iconv を確認できます。
root 16729 0.0 0.1 164076 812 pts/0 S+ 23:00 0:00 iconv -c -f gb2312 -t utf-8 20110525.csv > 20110525.utf8.csv
コマンド「iconv -c -f gb2312 -t utf-8 20110525.csv > 20110525.utf8.csv」は、ターミナルから手動で入力すると正しく機能します。しかし、Javaから呼び出すとうまくいきません。
私がiconvを呼び出す2つの方法の開始ディレクトリには、同じ開始ディレクトリがあります。