之前領導給我一個問題,說線上有個亂碼問題,讓我解決一下,說話語氣很輕鬆,我也以爲是個小問題。我就是問了一下當事人,當事人說提交的信息偶爾會有亂碼,並不是所有內容都是,可能是內容某一個地方亂碼。如果修改提交信息,亂碼可能消失。
先說一下結果吧,我當時對這個系統不瞭解,努力尋找,花了一早上找到並解決了。但之後聽當事人說,這個問題有半年了,沒人解決,只能每天靠手工更改數據庫。
找到的代碼如下,你能看出來爲什麼亂碼了麼?
private JSONObject getRequestParamJson(ServletRequest request) throws IOException {
StringBuilder sb = new StringBuilder();
try(ServletInputStream inputStream = request.getInputStream()){
byte[] b = new byte[1024];
int temp;
while((temp = inputStream.read(b)) != -1){
sb.append(new String(b, 0, temp, "UTF-8"));
}
}catch(IOException e){
log.error(e.toString());
}
return JSONObject.parseObject(sb.toString());
}
我想P7,P8沒解決,一方面是他們已經很久沒關注代碼了,二是這個是微服務架構,中間環節有問題很難查找,三就是我非常佩服的,他們甩鍋能力一留的強,甩了幾個月,甩到我頭上了!