最近遇到一個(gè)問題钞翔,java通過WinRM遠(yuǎn)程調(diào)用powershell腳本執(zhí)行結(jié)果里面中文顯示問號(???)的問題苇侵。
經(jīng)過網(wǎng)上一些查證乎串,找到了一種解決辦法凡傅,比較low:
將執(zhí)行腳本的結(jié)果保存成文件旺上,然后再讀取文件瓶蚂,中文就顯示正常了,這樣的操作方式需要寫問題宣吱,對于一些特殊情況不適用窃这,而且有些客戶也不愿意。
在寫其他的代碼的時(shí)候征候,用到了加密解密杭攻,忽然想到中文無法正常回傳倍奢,但是字母和數(shù)字沒有問題朴上,可以通過加密解密來吧中文轉(zhuǎn)換了,測試了一些加解密的方式卒煞,但是對結(jié)果長度有顯示痪宰,忽然想到了Url的加解密,這個(gè)好像沒有限制畔裕,果斷嘗試一下:
powershell腳本URL加密
$RES = $HOSTGROUP_LIST | ConvertTo-Json -Depth 3
Return [System.Web.HttpUtility]::UrlEncode($RES)
Java端接收結(jié)果URL解密
String raw = this.raw(command); System.out.println(raw);
try {
????????raw = URLDecoder.decode(raw, "UTF-8");
} catch (Exception e) {
????????e.printStackTrace();
}?
結(jié)果效果圖: