最近遇到一个问题,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();
}
结果效果图:
效果图