首頁 >Java >Java基礎 >java提交亂碼解決方法

java提交亂碼解決方法

尚
原創
2019-12-17 14:54:132465瀏覽

java提交亂碼解決方法

java提交亂碼解決方法:

1、如果提交方式為post,想不亂碼,只需要在伺服器端設定request物件的編碼即可,客戶端以哪種編碼提交的,伺服器端的request物件就以對應的編碼接收,例如客戶端是以UTF-8編碼提交的,那麼伺服器端request物件就以UTF-8編碼接收(request.setCharacterEncoding("UTF -8"))

2、如果提交方式為get,設定request物件的編碼是無效的,request物件還是以預設的ISO8859-1編碼接收數據,因此要想不亂碼,只能在接收到資料後再手動轉換,步驟如下:

1).取得取得客戶端提交上來的數據,得到的是亂碼字串,data="???è?????"

String data = request.getParameter("paramName");

2).找出ISO8859-1碼表,得到客戶機提交的原始資料的位元組數組

byte[] source = data.getBytes("ISO8859-1");

3).透過位元組數組以指定的編碼構建字符串,解決亂碼

data = new String(source, "UTF-8");

透過位元組數組以指定的編碼建立字串,這裡指定的編碼是根據客戶端那邊提交資料時使用的字元編碼來定的,如果是GB2312 ,那麼就設定成data = new String(source, "GB2312"),如果是UTF-8,那麼就設定成data = new String(source, "UTF-8")

#3、客戶端想傳輸資料到伺服器,可以透過表單提交的形式,也可以透過超連結後面加參數的形式,例如:

<a href="${pageContext.request.contextPath}/servlet/RequestDemo05?userName=gacl&name=房明">点击</a>

點擊超鏈接,資料是以get的方式傳輸到伺服器的,所以接收中文資料時也會產生中文亂碼問題,而解決中文亂碼問題的方式與上述的以get方式提交表單中文資料亂碼處理問題的方式一致,如下所示:

String name = request.getParameter("name");
name =new String(name.getBytes("ISO8859-1"), "UTF-8");

另外,需要提的一點就是URL位址後面如果跟了中文數據,那麼中文參數最好使用URL編碼進行處理,如下所示:

<a href="${pageContext.request.contextPath}/servlet/RequestDemo05?userName=gacl&name=<%=URLEncoder.encode("房明", "UTF-8")%>">点击</a>

更多java知識請關注java基礎教程欄目。

以上是java提交亂碼解決方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn