【发布时间】:2015-02-05 09:21:20
【问题描述】:
我正在使用执行命令
Runtime.getRuntime().exec("ping google.de");
这将返回一个进程,我从中获取输入流。然后我初始化一个 BuffredReader
BufferedReader(new InputStreamReader(processInputStream, "UTF-8"));
如果我愿意
System.out.println(reader.readLine()); // The returned String of readLine()
// is used to create a javafx.scene.text.Text in my application
它将打印“?”而不是像“ü”、“ä”或“ö”这样的字符
所以句子“这个字符 - ä - 不会工作”被编码为“这个字符 - ? - 不会工作”
如何正确编码这些东西?
谢谢,巴斯蒂
ps:是的,我知道这个问题已经被问过几次了,但是我找不到可以解决我的问题的线程
【问题讨论】:
-
这是你打印的目标,它搞砸了。如果您打印的每个字符都显示一个问号,则多字节 UTF-8 代码已正确解码为单个字符。
-
目标是什么意思? idk 发生错误编码的地方。进程的输入流只会流式传输字节。然后 inputstreamreader 应该将它们编码为 uft-8,但事实并非如此。 BufferedReader 只返回字符,直到找到系统行分隔符。是 inputstreamreader 失败了吗?
-
@McDowell 我调试了我的阅读方法并且 readLine() 已经返回了一个包含“?”的字符串。它不是 println()
-
@Basti:您使用的是什么操作系统?视窗? Linux? macOS?
-
@Codo 我在 Windows 上工作。但如您所见,我没有使用默认字符集来编码输入流的字节。我将其设置为 UTF-8。所以我的程序在哪个操作系统上运行应该没有关系,不是吗?
标签: java string character-encoding inputstream