日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

乱码解决问题

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

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

1.post方式提交中文數(shù)據(jù)亂碼產(chǎn)生的原因和解決辦法

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

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

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

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

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

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

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

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

點擊超鏈接,數(shù)據(jù)是以get的方式傳輸?shù)椒?wù)器的,所以接收中文數(shù)據(jù)時也會產(chǎn)生中文亂碼問題,而解決中文亂碼問題的方式與上述的以get方式提交表單中文數(shù)據(jù)亂碼處理問題的方式一致,如下所示:

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

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

另外,需要提的一點就是URL地址后面如果跟了中文數(shù)據(jù),那么中文參數(shù)最好使用URL編碼進行處理,如下所示:

<a href="${pageContext.request.contextPath}/servlet/RequestDemo05?userName=gacl&name=<%=URLEncoder.encode("徐達沛", "UTF-8")%>">點擊</a>

?

轉(zhuǎn)載于:https://www.cnblogs.com/zhangzhiqin/p/8127332.html

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。