在Java程序中,我通过
然而,当该过程输出非ASCII字符(例如
在
我应该如何更改才能使
编辑:我尝试了
ProcessBuilder
创建一个新的Process
。args[0] = directory.getAbsolutePath() + File.separator + program;
ProcessBuilder pb = new ProcessBuilder(args);
pb.directory(directory);
final Process process = pb.start();
然后,我使用一个新的 Thread
读取处理标准输出。
new Thread() {
public void run() {
BufferedReader reader = new BufferedReader(
new InputStreamReader(process.getInputStream()));
String line = "";
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
}.start();
然而,当该过程输出非ASCII字符(例如
'é'
)时,line
中会有字符'\uFFFD'
。在
getInputStream
返回的InputStream
中,编码是什么(我的平台是欧洲的Windows)?我应该如何更改才能使
line
包含预期的数据(即'\u00E9'
代表'é'
)?编辑:我尝试了
new InputStreamReader(...,"UTF-8")
: é
变成了\uFFFD
。