java前端傳參奇數亂碼 雙數正常。排除和解決辦法

2021-08-28 14:45:36 字數 1649 閱讀 1428

1.問題描述:

前台向後台傳輸資料、奇數中文亂碼

前台格式已經定義:aplication/json;charset=utf-8

2.排查步驟:

前端console.log()列印、瀏覽器f12再次檢視請求引數是否是中文,編碼是否utf-8

controller檢查,debug在controller入口去引數時檢查是否是中文亂碼

去web.xml中檢查過濾器**碼一般沒人會寫在***吧)

characterencodingfilter

org.springframework.web.filter.characterencodingfilter

encoding

utf-8

一般會有這種預設的字元編碼***,但是我這還有乙個paramfliter,對所有引數進行過濾轉碼。

}

發現原因:

bufferedreader = new bufferedreader(new inputstreamreader(inputstream));

...final bytearrayinputstream bytearrayinputstream = new bytearrayinputstream(body.getbytes());

未對buffer編碼進行設定。

bufferedreader = new bufferedreader(new inputstreamreader(inputstream));

...final bytearrayinputstream bytearrayinputstream = new bytearrayinputstream(body.getbytes());

對buffer進行編碼:任然報錯

bufferedreader = new bufferedreader(new inputstreamreader(inputstream),「utf-8」);

…final bytearrayinputstream bytearrayinputstream = new bytearrayinputstream(body.getbytes(「utf-8」));

用standardcharset.utf_8替換"utf-8"

這是我解決這次單數報錯的步驟。

其實還是因為gbk轉utf-8位元組的問題

之前安卓中文傳參也遇到乙個中文亂碼

解決方法是:

string a ="gbk編碼";

string b = new string(a.getbyte(),"iso-8859-1");

string c = new string(b.getbyte(),"utf-8");

這兒沒這樣處理的原因就是因為發過來的其實是utf-8,但是專案的屬性是gbk,所以直接用utf-8轉就好。

前端傳參時亂碼解決方案

前後端互動時經常會用到這種問題,當傳參遇到中文時就頭大,各種亂碼。下面就總結了兩種亂碼的情況並給出解決方案。還是我們的js的方法 encodeuri 函式可把字串作為 uri 進行編碼。api參考 1 通過url傳參 前端轉碼兩次 至於為什麼這種情景前端要轉碼兩次,原理參考 前端轉碼 var url...

前端 vue 傳參

axios傳參 vuex傳參 1 在父元件中自定義佔位符 header 是自定義的名字 2 在子元件中定義props屬性接收父元件傳遞過來的資料 props 變數名 msg props與data同級 1 在子元件methods中定義方法 方法名 2 在佔位符中 事件名 方法名 此處方法名後不帶括號 ...

JS傳參中文亂碼

在傳參的時候給中文引數加上兩個encodeuri即可,類似這樣 encodeuri encodeuri balanceunit 寫法二escape encodeuri tmplitem.hyzname 接收函式用unescape decodeuri tmplitem.hyzname 寫法三escap...