站長資訊網(wǎng)
最全最豐富的資訊網(wǎng)站

java中請求亂碼解決方法

java中請求亂碼解決方法

出現(xiàn)的問題:

通過get請求向服務器發(fā)送請求時,如果請求參數(shù)為中文時,服務器端接受到的參數(shù)為亂碼。

亂碼原因分析及解決辦法:

1、關于解碼和編碼

編碼:'中'→1110001

解碼:1110001→'中'

亂碼:編碼和解碼過程中使用了不同的字符集

2、Web應用中字符編碼解碼的問題

(1)請求過程:

<1>GET請求

瀏覽器端是以UTF-8進行編碼,所以在服務器端也應該以UTF-8進行解碼

由于GET請求參數(shù)附著在URL地址后面,所以要統(tǒng)一的URL地址的解碼字符集。

解決辦法:

在tomcat配置文件server.xml中找到第一個connector加入如下屬性 URIEncoding=UTF-8

<2>POST請求

在獲取請求參數(shù)前執(zhí)行:request.setCharacterEncoding("UTF-8");

(2)響應過程

(1)指定響應數(shù)據(jù)的編碼字符集

(2)告訴瀏覽器響應數(shù)據(jù)應該使用什么字符集進行解碼

<1>Tomcat服務器會自動根據(jù)“解碼字符集”設置“編碼字符集”

<2>設置編碼字符集:告訴瀏覽器當前響應數(shù)據(jù)的內(nèi)容類型:response.setContentType("text/html;charset=UTF-8");需要注意的是,需要在response.getWriter();之前設置,否則無效。

建議:

所有的過濾器都只對POST請求起作用,在jsp頁面中設置字符編碼方式,都只是對表單提交時的POST請求起作用,對GET請求不能起到設置其字符編碼的作用,

在GET請求中使用的是默認的編碼方式,所以對GET請求,需要在server.xml文件中設置URIEncoding="UTF-8"然后重啟TOMCAT便可以實現(xiàn)解決中文亂碼問題,

但是不建議在href超鏈接請求中傳達中文參數(shù),也不建議在GET請求中傳遞中文參數(shù)。

另外對傳遞的部分中文實現(xiàn)傳遞和接收時的統(tǒng)一的編碼方法在傳達參數(shù)時使用

"reply.jsp?title="+java.net.URLEncoder.encode(keywords)

然后在接收參數(shù)頁面使用keywords=new String(request.getParameter("keywords").getBytes("8859_1"));這種方式雖然暫時解決了中文亂碼問題,

但是在后期的維護和部署到其他的服務器時可以仍會會出現(xiàn)中文亂碼了問題,所以不建議使用。

對于Post請求,只需在Servlet或者jsp中寫入如下代碼就可以把解決從表單中傳入的中文亂碼問題

 request.setCharacterEncoding("utf-8");

了解:

而對于Get請求,因為請求參數(shù)會被附加到地址欄的URL之后,所以不能用上面的處理方法。應該這樣:

   String str=request.getQueryString();    //使用URLDecoder解碼字符串    String str1=java.net.URLDecoder.decode(str,"utf-8");    String[] paraStrings=str1.split("&");     //paraStrings[0]就是第一個參數(shù),依次類推...    for(String paraString : paraStrings)    {          String[] nameValue=paraString.split("=");          //nameValue[0]就是表單的name,nameValue[1]就是表單name對應的值    }

還有一種方法就是獲取請求參數(shù)之后對請求參數(shù)值重新編碼,也就是先將其轉換成字節(jié)數(shù)組,再將字節(jié)數(shù)組重新解碼成字符串。

  String str=request.getParameter("name");   byte[] bytes=str.getBytes("ISO-8859-1");   String name=new String(bytes,"utf-8");

結論:傳遞中文參數(shù)時,最好使用POST請求來提交。不同服務器設置編碼方式可能不同,不同操作系統(tǒng)設置編碼方式也可能不同。

推薦:java基礎教程

贊(0)
分享到: 更多 (0)
網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號
麻豆亚洲AV永久无码精品久久| 无码日韩精品一区二区人妻| 国产精品亚洲午夜一区二区三区| 久久夜色精品国产噜噜| 香蕉在线精品视频在线观看2| 日韩人妻无码精品无码中文字幕| 日韩精品一区二区三区视频| 国产精品久久久久久久久久久不卡| 亚洲人成在线精品| 精品一区二区三区免费毛片爱 | 日韩av无码久久精品免费| 国产麻豆精品精东影业av网站| 亚洲精品欧美综合四区| 国产精品机视频大陆| 国产精品久久久久影视不卡| 久久精品青青草原伊人| 亚洲精品国产手机| 亚洲理论精品午夜电影| 2021午夜国产精品福利| 97久久精品国产成人影院| 99re6这里有精品热视频在线| 99无码精品二区在线视频 | 国产精品久久久久久久久久久搜索| 精品免费国产一区二区| 国产日产欧产精品精品浪潮| 亚洲a∨无码精品色午夜| 亚洲精品无码中文久久字幕| 亚洲AV无码一区二区三区久久精品| 亚洲精品人成网线在线播放va| 久久天堂AV女色优精品| 精品久久久久久中文字幕无码 | 久久夜色精品国产www| 久久996热精品xxxx| 中文字幕精品无码一区二区 | 久久se精品一区二区| 柠檬福利精品视频导航| 久久精品94精品久久精品| 久久婷婷国产综合精品| 亚洲精品国产福利片| 久久久久久亚洲精品影院| 亚洲爆乳精品无码一区二区 |