創(chuàng)新互聯(lián)www.cdcxhl.cn八線動(dòng)態(tài)BGP香港云服務(wù)器提供商,新人活動(dòng)買多久送多久,劃算不套路!
讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對(duì)這個(gè)行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡(jiǎn)單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:申請(qǐng)域名、虛擬主機(jī)、營銷軟件、網(wǎng)站建設(shè)、寧洱網(wǎng)站維護(hù)、網(wǎng)站推廣。這篇文章主要講解了Javaweb接收表單數(shù)據(jù)并處理中文亂碼的方法,內(nèi)容清晰明了,對(duì)此有興趣的小伙伴可以學(xué)習(xí)一下,相信大家閱讀完之后會(huì)有幫助。
前端表單數(shù)據(jù)
常見的表單項(xiàng)的傳值,如:
普通 input : name屬性值為后臺(tái)接收時(shí)的參數(shù)值。
用戶名:
密碼:
單選 radio :?jiǎn)芜x按鈕的 name 值相同才能實(shí)現(xiàn)只能點(diǎn)擊一個(gè)。
性別:
男
女
多選checkbox :name值相同。
愛好:
唱
跳舞
rap
籃球
select下拉選擇 :后臺(tái)通過degree作為參數(shù),獲取選中的那個(gè)option的value值。
下拉選擇:
textarea文本域 :rows定義顯示的行數(shù),cols定義的是顯示的列數(shù)。
文本域:
后臺(tái)接收數(shù)據(jù)
接收表單數(shù)據(jù):
String 表單name= request.getParameter(表單name);
普通input、單選radio、select下拉選擇、textarea文本域可通過此方法獲取。
String[] hobbies = request.getParameterValues("hobby");
多選checkbox可通過此方法獲取。
中文亂碼處理
GET方式提交的數(shù)據(jù)
先通過 String username = request.getParameter(username) 獲得該表單的值,此時(shí)是亂碼的。
使用String new_username = new String(username.getBytes("iso8859-1"), "utf-8") 進(jìn)行編碼轉(zhuǎn)換
相關(guān)APi :
String(byte[] bytes, Charset charset) 構(gòu)造一個(gè)新的String,由指定的字節(jié)的數(shù)組轉(zhuǎn)化為指定編碼的字節(jié)數(shù)組。
getBytes(Charset charset)使用指定的編碼方式將該String編碼為字節(jié)序列,將結(jié)果存儲(chǔ)到新的字節(jié)數(shù)組中。
解釋:通過get方式提交的數(shù)據(jù)的編碼方式為iso8859-1, 先獲取該編碼方式的字節(jié)數(shù)組,再將該字節(jié)數(shù)組轉(zhuǎn)化為utf-8編碼的字節(jié)數(shù)組,然后將該字節(jié)數(shù)組轉(zhuǎn)換為字符串。
POST方式提交的數(shù)據(jù)
request.setCharacterEncoding("utf-8");
服務(wù)器端向客戶端發(fā)送的數(shù)據(jù)
response.setContentType("text/html;charset=utf-8");
以下是全部代碼:
GET提交方式:
@WebServlet(name = "RegisterServlet",urlPatterns = "/register") public class RegisterServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //get提交方式處理中文亂碼 String username = request.getParameter("username"); String new_username = new String(username.getBytes("iso8859-1"), "utf-8"); String password = request.getParameter("password"); String new_password = new String(password.getBytes("iso8859-1"), "utf-8"); String gender = request.getParameter("gender"); String new_gender = new String(gender.getBytes("iso8859-1"), "utf-8"); String[] hobbies = request.getParameterValues("hobby"); for (int i = 0; i < hobbies.length; i++) { hobbies[i]=new String(hobbies[i].getBytes("iso8859-1"), "utf-8"); } String degree = request.getParameter("degree"); String new_password = new String(password.getBytes("iso8859-1"), "utf-8"); String other = request.getParameter("other"); String new_password = new String(password.getBytes("iso8859-1"), "utf-8"); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } }