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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

java servlet 参数乱码_JSPServlet处理参数中的中文乱码总结

發布時間:2023/11/27 生活经验 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java servlet 参数乱码_JSPServlet处理参数中的中文乱码总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

從form表單提交信息到一個JSP頁面或者一個Servlet進行處理的時候,提交的中文信息若不加處理的話就會顯示亂碼,如一串???。現在通過一個例子來進行總結如下:

寫一個用戶信息提交頁面,通過這個頁面向一個JSP頁面或者一個servlet提交用戶信息,代碼如下:

1

23

4表單提交5678????????用戶名:
9????????密??碼:
10????????愛??好:運動?11音樂
12??131415

現在寫deal處理頁面,代碼如下:

1

23

4顯示用戶信息567//request.setCharacterEncoding("gb2312");9String?username=request.getParameter("username");10//String?username?=?new?String(request.getParameter("username").getBytes("iso-8859-1"),"gbk");11String?password=request.getParameter("password");12//String?love?=?new?String(request.getParameter("love").getBytes("iso-8859-1"),"gbk");13String?love=request.getParameter("love");14%>15您好,你的密碼是:,您的愛好是:!1617

從前面的信息提交頁面提交來的信息包含中文,這時就會出現亂碼。如:

??????您好,你的密碼是:1234569,您的愛好是:????!

現在,把第8行的注釋符號去掉,重新執行頁面(請確保web服務器會自動加載更改后的頁面,否則請重新啟動web服務器),這時可以看到正確的中文信息了,如:

王冰您好,你的密碼是:9856322,您的愛好是:音樂!

也可以使用另外一種方法進行處理,把deal.jsp的第8行注釋掉,然后把第9行、第13行也注釋掉,去掉第10行和第12行的注釋符號,保存好重新執行頁面(方法同上),同樣會顯示正常的信息。

下面通過前面的信息提交頁面向一個servlet提交信息,然后對其中的中文亂碼進行處理。寫一個servlet程序(formdeal.java),如下:

1

packageorg.wzhongyu;23importjava.io.IOException;4importjava.io.PrintWriter;5importjavax.servlet.ServletException;6importjavax.servlet.http.HttpServlet;7importjavax.servlet.http.HttpServletRequest;8importjavax.servlet.http.HttpServletResponse;910

publicclassformdealextendsHttpServlet{11

publicvoiddestroy(){12super.destroy();//Just?puts?"destroy"?string?in?log13//Put?your?code?here14}1516publicvoiddoGet(HttpServletRequest?request,?HttpServletResponse?response)17

throwsServletException,?IOException{18this.doPost(request,?response);19????}2021publicvoiddoPost(HttpServletRequest?request,?HttpServletResponse?response)22

throwsServletException,?IOException{23//response.setContentType("text/html;?charset=gbk");24PrintWriter?out=response.getWriter();25//request.setCharacterEncoding("gbk");26String?username=request.getParameter("username");27????????String?password=request.getParameter("password");28????????String?love=request.getParameter("love");29????????out.print("您的用戶名:"+username+"
");//30out.print("您的密碼:"+password+"
");//31out.print("您的愛好:"+love);//32}33

publicvoidinit()throwsServletException{34//Put?your?code?here35}36}37

該servlet的部署描述文件(web.xml)如下:

1

<?xml ?version="1.0"?encoding="UTF-8"?>2????xmlns="http://java.sun.com/xml/ns/javaee"4????xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"5????xsi:schemaLocation="http://java.sun.com/xml/ns/javaee6????http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">78This?is?the?description?of?my?J2EE?component9This?is?the?display?name?of?my?J2EE?component10formdeal11org.wzhongyu.formdeal12131415formdeal16/servlet/formdeal1718把信息提交頁面的第7行改為:

重新部署并執行頁面,同樣看到顯示的中文信息是亂碼。現在把第23行的注釋符去掉,重新執行會看到下面的信息,提交過來的中文信息是亂碼:

您的用戶名:??????您的密碼:123465您的愛好:????把第25行的注釋符也去掉,重新執行,可以看到可以顯示正常的信息了,如下:

您的用戶名:王冰

您的密碼:5632215您的愛好:音樂如果只去掉第25行的注釋,執行程序則會顯示下面的信息:

??????????????123456???????由此可見,這個兩個都不可以忽略掉,也可以從下面的方式驗證必須寫上兩個,把formdeal.java里的第29,30,31行的中文換成英文,同樣注釋掉第23行,而不要注釋掉第25行,執行后顯示的信息如下:

username???password65462458

love??

這是由于沒有設置servlet響應的頁面的字符編碼造成的。

在servlet里也可以這樣進行處理,把第25行注釋掉,而不要注釋第23行,把第26行和第28行分別改為如下代碼:

String?username=newString(request.getParameter("username").getBytes("iso-8859-1"),"gbk");?

????????String?love=newString(request.getParameter("love").getBytes("iso-8859-1"),"gbk");這樣也可以正常顯示中文信息。

1

2011年2月27日補充23源于最近項目在不同的Linux系統中部署導致部分程序字符為亂碼的問題,進行處理時需要注意以下問題:4getBytes()方法在將字符串進行轉碼時,是根據操作系統平臺的默認字符編碼進行轉碼的。5getBytes(Charset?charset)方法是使用指定的字符編碼進行轉碼。67對于亂碼問題,最好是項目的所有出入口都統一編碼,文件的編碼也要統一,請求部分使用過濾器進行處理。

posted on 2007-11-11 17:41 wzhongyu 閱讀(3190) 評論(2) ?編輯 ?收藏 所屬分類: Java學習

總結

以上是生活随笔為你收集整理的java servlet 参数乱码_JSPServlet处理参数中的中文乱码总结的全部內容,希望文章能夠幫你解決所遇到的問題。

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