【Java】解决远程调用PowerShell返回结果中文显示???

最近遇到一个问题,java通过WinRM远程调用powershell脚本执行结果里面中文显示问号(???)的问题。

经过网上一些查证,找到了一种解决办法,比较low:

将执行脚本的结果保存成文件,然后再读取文件,中文就显示正常了,这样的操作方式需要写问题,对于一些特殊情况不适用,而且有些客户也不愿意。

在写其他的代码的时候,用到了加密解密,忽然想到中文无法正常回传,但是字母和数字没有问题,可以通过加密解密来吧中文转换了,测试了一些加解密的方式,但是对结果长度有显示,忽然想到了Url的加解密,这个好像没有限制,果断尝试一下:

powershell脚本URL加密

$RES = $HOSTGROUP_LIST | ConvertTo-Json -Depth 3

Return [System.Web.HttpUtility]::UrlEncode($RES)

Java端接收结果URL解密

String raw = this.raw(command); System.out.println(raw);

try {

        raw = URLDecoder.decode(raw, "UTF-8");

} catch (Exception e) {

        e.printStackTrace();

结果效果图:

效果图

你可能感兴趣的:(【Java】解决远程调用PowerShell返回结果中文显示???)