1. 程式人生 > >SSM框架轉發處理跨域問題,流讀取的時候部分中文亂碼的解決(中英文交界處亂碼)

SSM框架轉發處理跨域問題,流讀取的時候部分中文亂碼的解決(中英文交界處亂碼)

    今天又碰到一個奇葩的問題,曲折的過程就不說了。

    內容:

           朋友做一個別人的後臺對接專案,但是後臺是用aspx寫的,為了安全性的目的,不給跨域許可權。

          因此朋友在本地用ssm 框架搭建一個轉發的中轉請求。  莫名其妙出現一個亂碼的問題。  不是一般的亂碼,是部分亂碼,出現在中英文交界處亂碼。

          另外一個奇葩的問題就是,在本地用 main方法直接測試的時候,一切OK。  原樣程式碼拷貝一份進ssm框架中執行起來,總是要亂碼,就是中英文結合處會出現一個亂碼。

          中途的讀取過程用到了Buffer,我不是沒有懷疑過。  可是上面的問題又說明了它沒有問題。。。。    為什麼這個Buffer會在這樣的一個場景出了奇怪的錯誤呢???

          真相只有一個:    SSM容器中(或者說他的容器配置中,因為時間原因沒有細看),替換了jdk中預設的Buffer的預設編碼類。    

         另外,說明一個問題,用字元讀取流,可能會導致失真!!!!   切記切記。

        此外,記錄一下一個比較底層但有用的關於流的方法,   就是java流中的  Inputstream.avalible()方法,它可以得到這個流在快取中的長度。   因為我們平時多位元組讀取的時候,最後會拼接在一起。  多了又浪費空間,因此這個方法還是很有用的。