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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

乱码解决问题

發布時間:2025/7/14 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 乱码解决问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在項目開發中常常遇到亂碼問題,使我們很苦惱,下面我介紹經常遇見的亂碼問題以及相應的解決辦法。

1.post方式提交中文數據亂碼產生的原因和解決辦法

之所以會產生亂碼,就是因為服務器和客戶端溝通的編碼不一致造成的,因此解決的辦法是:在客戶端和服務器之間設置一個統一的編碼,之后就按照此編碼進行數據的傳輸和接收。

由于客戶端是以UTF-8字符編碼將表單數據傳輸到服務器端的,因此服務器也需要設置以UTF-8字符編碼進行接收,要想完成此操作,服務器可以直接使用從ServletRequest接口繼承而來的"setCharacterEncoding(charset)"方法進行統一的編碼設置。修改后的代碼如下:

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
/**
* 客戶端是以UTF-8編碼傳輸數據到服務器端的,所以需要設置服務器端以UTF-8的編碼進行接收,否則對于中文數據就會產生亂碼
*/
request.setCharacterEncoding("UTF-8");//使用request.setCharacterEncoding("UTF-8");設置服務器以UTF-8的編碼接收數據后,此時就不會產生中文亂碼問題了
String userName = request.getParameter("userName");
System.out.println("userName:"+userName);
}

2?以GET方式提交表單中文參數的亂碼問題

對于以get方式傳輸的數據,request即使設置了以指定的編碼接收數據也是無效的,默認的還是使用ISO8859-1這個字符編碼來接收數據,客戶端以UTF-8的編碼傳輸數據到服務器端,而服務器端的request對象使用的是ISO8859-1這個字符編碼來接收數據,服務器和客戶端溝通的編碼不一致因此才會產生中文亂碼的。解決辦法:在接收到數據后,先獲取request對象以ISO8859-1字符編碼接收到的原始數據的字節數組,然后通過字節數組以指定的編碼構建字符串,解決亂碼問題。

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
/**
*
* 對于以get方式傳輸的數據,request即使設置了以指定的編碼接收數據也是無效的,默認的還是使用ISO8859-1這個字符編碼來接收數據
*/
String name = request.getParameter("name");//接收數據
name =new String(name.getBytes("ISO8859-1"), "UTF-8") ;//獲取request對象以ISO8859-1字符編碼接收到的原始數據的字節數組,然后通過字節數組以指定的編碼構建字符串,解決亂碼問題
System.out.println("name:"+name);
}

3?以超鏈接形式傳遞中文參數的亂碼問題

<a href="${pageContext.request.contextPath}/servlet/RequestDemo05?userName=gacl&name=海頤軟件">點擊</a>

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

1 String name = request.getParameter("name");

2 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>

?

轉載于:https://www.cnblogs.com/zhangzhiqin/p/8127332.html

總結

以上是生活随笔為你收集整理的乱码解决问题的全部內容,希望文章能夠幫你解決所遇到的問題。

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