SSM框架轉發處理跨域問題,流讀取的時候部分中文亂碼的解決(中英文交界處亂碼)
阿新 • • 發佈:2019-01-27
今天又碰到一個奇葩的問題,曲折的過程就不說了。
內容:
朋友做一個別人的後臺對接專案,但是後臺是用aspx寫的,為了安全性的目的,不給跨域許可權。
因此朋友在本地用ssm 框架搭建一個轉發的中轉請求。 莫名其妙出現一個亂碼的問題。 不是一般的亂碼,是部分亂碼,出現在中英文交界處亂碼。
另外一個奇葩的問題就是,在本地用 main方法直接測試的時候,一切OK。 原樣程式碼拷貝一份進ssm框架中執行起來,總是要亂碼,就是中英文結合處會出現一個亂碼。
中途的讀取過程用到了Buffer,我不是沒有懷疑過。 可是上面的問題又說明了它沒有問題。。。。 為什麼這個Buffer會在這樣的一個場景出了奇怪的錯誤呢???
真相只有一個: SSM容器中(或者說他的容器配置中,因為時間原因沒有細看),替換了jdk中預設的Buffer的預設編碼類。
另外,說明一個問題,用字元讀取流,可能會導致失真!!!! 切記切記。
此外,記錄一下一個比較底層但有用的關於流的方法, 就是java流中的 Inputstream.avalible()方法,它可以得到這個流在快取中的長度。 因為我們平時多位元組讀取的時候,最後會拼接在一起。 多了又浪費空間,因此這個方法還是很有用的。