通过java上的SSH(Jsch)连接到windows时出现奇怪的符号

通过java上的SSH(Jsch)连接到windows时出现奇怪的符号,java,windows,ssh,jsch,printstream,Java,Windows,Ssh,Jsch,Printstream,我试图在windows XP中使用Jsch外壳通道执行命令,但由于某些原因,我的System.out stream中出现了奇怪的符号,并且这些命令无法执行,我用于connect的代码如下: this.session = jsch.getSession(this.login, this.host); Properties properties = new Properties(); properties.put("StrictHostKeyChecking", "no"); session.se

我试图在windows XP中使用Jsch外壳通道执行命令,但由于某些原因,我的System.out stream中出现了奇怪的符号,并且这些命令无法执行,我用于connect的代码如下:

this.session = jsch.getSession(this.login, this.host);

Properties properties = new Properties();
properties.put("StrictHostKeyChecking", "no");
session.setPassword(this.password);
session.setConfig(properties);

session.connect(30000);


channel =(ChannelShell) session.openChannel("shell");


PipedInputStream pip = new PipedInputStream(40);
channel.setInputStream(pip);
channel.setOutputStream(System.out);

PipedOutputStream pop = new PipedOutputStream(pip);
print = new PrintStream(pop); 
channel.connect();
然后我得到以下信息:

[1;1HMicrosoft Windows XP [Versi�n 5.1.2600][2;1H(C) Copyright 1985-2001 Microsoft Corp.[4;1HC:\Documents and Settings\diego\Escritorio>[4;44H
当我尝试调用cd C:\MyFolder\然后调用另一个命令(所有命令都是从ssh客户端测试并运行的)时,我生成了更多奇怪的符号,但没有得到命令的结果,这会是什么问题?以下是我发送的命令和结果:

exec.print.println("cd C:\\MyFolder\\");
exec.print.println("some other command");
结果:

[1;1HMicrosoft Windows XP [Versi�n 5.1.2600][2;1H(C) Copyright 1985-2001 Microsoft Corp.[4;1HC:\Documents and Settings\diego\Escritorio>[4;44H[4;1HC:\Documents and Settings\diego\Escritorio>c[4;58H[4;1HC:\Documents and Settings\diego\Escritorio>cd C:\MyFolder\[4;58H[4;46H[4;58H[4;47H[4;58H[4;48H[4;58H[4;49H[4;58H[4;50H[4;58H[4;51H[4;58H[4;52H[4;58H[4;53H[4;58H[4;54H[4;58H[4;55H[4;58H[4;56H[4;58H[4;57H[4;58H

我在windows xp中使用FreeShd,该程序在Ubuntu上运行,我在控制台中使用ssh并与windows xp配合使用,我正在尝试在java程序中实现它,感谢您的帮助。

这是一个编码问题,加上缺乏终端模拟

SSH守护进程希望与理解终端控制序列的设备进行对话(字符串
[1;1H
前面实际上有一个
ESC
字符)。您的程序不提供终端模拟,因此您可以看到原始转义序列


菱形/问号字符表示您使用的字体不包含服务器发送的字符。在这种情况下,它可能是重音字符。

您是否尝试过direct ssh?如果direct ssh有效,则为其jsch。使用基于linux的ssh服务器尝试jsch。如果jsch有效,则为FreeShd问题。

您是否尝试过direct sshssh?如果直接ssh有效,那么它是jsch。使用基于linux的ssh服务器尝试jsch。如果jsch有效,那么它是免费的。谢谢,就像我在问题中说的,我尝试直接ssh,但我没有说我使用ubuntu中的ssh,这是有效的,与我在windows中尝试使用的代码相同,我在ubuntu中使用过它,也可以使用,但在windows中没有,所以只能使用FreeSSHd,但我读到这是windows上最好的免费ssh,也是最容易安装的ssh服务器,有任何ssh服务器建议吗?谢谢。@Usman Saleem你的建议是对的,我在我的windows上安装openssh,一切正常,谢谢:DNo issues Diego:),我将添加我的评论作为答案,以便你可以接受。我找到了!U+FFFD表明有这是从Unicode到传统字符集的转换,在转换过程中丢失了信息或存在无效的代码单元序列(适用于UTF-8和UTF-16)。这与字体无关。谢谢,windows是西班牙语的,因此菱形/问题确实是(version),在这种情况下如何设置字体?以及如何使用正确的终端模拟?Jsch有一个类似channel.setPty的方法,这可能是我需要的?