错误:
在eclipse中调试openfire插件的时候,console中打印输出为乱码。
原因:
查看源码,org.jivesoftware.openfire.launcher.Launcher
该类中找到以下代码:
// Get the input stream and read from it
try (InputStream in = openfired.getInputStream()) {
BufferedReader br = new BufferedReader(new InputStreamReader(in));
int c;
while ((c = in.read()) != -1) {
try {
StyleConstants.setFontFamily(styles, "courier new");
pane.getDocument().insertString(pane.getDocument().getLength(),
"" + (char)c, styles);
}
catch (BadLocationException e) {
// Ignore.
}
}
}
catch (IOException e) {
e.printStackTrace();
}
错误在于,读取的是字节流,直接输出。
解决:
将代码改为以下代码:使用bufferreader
// Get the input stream and read from it
try (InputStream in = openfired.getInputStream()) {
BufferedReader br = new BufferedReader(new InputStreamReader(in));
String line = null;
// int c;
while ((line = br.readLine()) != null) {//(c = in.read()) != -1
try {
StyleConstants.setFontFamily(styles, "courier new");
pane.getDocument().insertString(pane.getDocument().getLength(),
"" + line +"\n" , styles);//(char)c
}
catch (BadLocationException e) {
// Ignore.
}
}
}
catch (IOException e) {
e.printStackTrace();
}