2
我需要在Windows上處理一些長時間運行命令的文本輸出。要儘早獲得此過程的結果,我正在使用Scala Stream和ProcessBuilder類。如何在scala中解碼系統進程輸出?
一切都運行完美,但我遇到了字符編碼問題。
這裏是我的分條源代碼(powershell命令只是替換真正的可執行文件)。
import scala.sys.process._
object CP850TEST extends Application{
val cmd = Seq("powershell", "-command", "echo 1a; Start-Sleep -s 1; echo 2äüîß; Start-Sleep -s 1 ; echo 3end")
val lines:Stream[String] = cmd.lines
lines.foreach(println)
}
輸出schould樣子:
1a
2äüîß
3end
但只顯示:
1a
2����
3end
要解決這個問題的Java,我想聲明的charset(CP850)的InputStream,但我無法在Scala中找到任何解決方案:
public static void main(String[] args) throws IOException {
ProcessBuilder pb = new ProcessBuilder("powershell", "-command", "echo 1a; Start-Sleep -s 1; echo 2äüîß; Start-Sleep -s 1 ; echo 3end");
Process process = pb.start();
Scanner scanner = new Scanner(process.getInputStream(), "Cp850");
while (scanner.hasNextLine()) {
String s = scanner.nextLine();
System.out.println(s);
}
scanner.close();
}
退房這篇文章,希望你可以使用ISO-8859-1編碼器:HTTP://計算器.com/a/13625541/3248346 –
@IK:它不起作用,Sascha的溪流以相反的方式被破壞。 –