日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

HttpServletResponse.getWriter().print乱码,request.getHeader乱码,解决方法

發布時間:2023/12/10 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HttpServletResponse.getWriter().print乱码,request.getHeader乱码,解决方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、添加響應類型即可

//這句話的意思,是讓瀏覽器用utf8來解析返回的數據
?? ??? ?response.setHeader("Content-type", "text/html;charset=UTF-8");

添加前后:

?

如果是header參數亂碼,解決方法如下:

HTTP Header 的編解碼

當客戶端發起一個 HTTP 請求除了上面的 URL 外還可能會在 Header 中傳遞其它參數如 Cookie、redirectPath 等,這些用戶設置的值很可能也會存在編碼問題,Tomcat 對它們又是怎么解碼的呢?

對 Header 中的項進行解碼也是在調用 request.getHeader 是進行的,如果請求的 Header 項沒有解碼則調用 MessageBytes 的 toString 方法,這個方法將從 byte 到 char 的轉化使用的默認編碼也是 ISO-8859-1,而我們也不能設置 Header 的其它解碼格式,所以如果你設置 Header 中有非 ASCII 字符解碼肯定會有亂碼。

我們在添加 Header 時也是同樣的道理,不要在 Header 中傳遞非 ASCII 字符,如果一定要傳遞的話,我們可以先將這些字符用 org.apache.catalina.util.URLEncoder 編碼然后再添加到 Header 中,這樣在瀏覽器到服務器的傳遞過程中就不會丟失信息了,如果我們要訪問這些項時再按照相應的字符集解碼就好了。

?

?

附:URLEncoder 、URLDecoder 轉碼解碼使用

傳遞參數,轉碼傳遞

String encodeStr = null; try {encodeStr = URLEncoder.encode("aabb22中國", "utf-8"); } catch (UnsupportedEncodingException e) {e.printStackTrace(); } System.out.println("lgq處理后:" + encodeStr);client.addHeader("headkey", encodeStr);//添加header請求參數方法

接收參數,解碼顯示

String name=(String) request.getHeader("headkey");
?? ??? ??? ??? ?String decodeStr = URLDecoder.decode(name, "utf-8"); ?

?? ??? ??? ??? ?
?? ??? ??? ??? ?System.out.println("hhhhhhhhhhhhhhhhh=====發 的==="+decodeStr);//獲取header請求參數

結果:

hhhhhhhhhhhhhhhhh=====發 的===aabb22中國

?

總結

以上是生活随笔為你收集整理的HttpServletResponse.getWriter().print乱码,request.getHeader乱码,解决方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。