Я хочу преобразовать большой 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();
Проблема в том, что метод proccess.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 имеет один и тот же стартовый каталог.