生活随笔
收集整理的這篇文章主要介紹了
常见JSP中文乱码例子及其解决方法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
http://blog.csdn.net/cannel_2020/article/details/7375768
JSP開發應用是,中文亂碼是個比較常見的問題,其根源是:Web容器默認的字符處理編碼是ISO-8859-1。
實例一、JSP頁面顯示時
[html] view plaincopyprint?
<html>??????<head>?????????<title>中文亂碼——JSP頁面顯示時</title>??????</head>??????<body>?????????<center>?????????????<br/>?????????????<h1>木蘭辭擬古決絕詞柬友</h1>?????????????<p>人生若只如初見,何事秋風悲畫扇。</p>?? ???????<p>等閑變卻故人心,卻道故人心易變。</p>?? ???????<p>驪山語罷清宵半,淚雨霖鈴終不怨。</p>?? ???????<p>何如薄幸錦衣郎,比翼連枝當日愿。</p>?????????</center>??????</body>??</html>??
<html><head><title>中文亂碼——JSP頁面顯示時</title></head><body><center><br/><h1>木蘭辭擬古決絕詞柬友</h1><p>人生若只如初見,何事秋風悲畫扇。</p><p>等閑變卻故人心,卻道故人心易變。</p><p>驪山語罷清宵半,淚雨霖鈴終不怨。</p><p>何如薄幸錦衣郎,比翼連枝當日愿。</p></center></body>
</html>
運行結果:
?
解決方法:為其指定中文字符集,<html>前加入
[html] view plaincopyprint?
<%@?page?contentType="text/html;charset=gb2312"?%>??
<%@ page contentType="text/html;charset=gb2312" %>
?
?
實例二、JSP頁面傳遞中文參數時
注冊頁面:
[html] view plaincopyprint?
<%@?page?contentType="text/html;charset=gb2312"?%>??<html>??????<head>?????????<title>中文亂碼——JSP頁面傳遞中文參數時</title>??????</head>??????<body>?????????<h2>申請賬號:</h2>?????????<form?action="userMsg.jsp"?method="POST">?????????????<p>郵箱:?<input?type="text"name="email"?id="email"/><p/>?????????????<p>昵稱:?<input?type="text"name="nickname"?id="nickname"/><p/>?????????????<p>密碼:?<input?type="password"name="password"?id="password"/><p/>?????????????<p>性別:?<input?type="radio"name="sex"?id="sex"value="男"?/>?男???????????????????????????<input?type="radio"?name="sex"id="sex"?value="女"?/>?女<p/>?????????????<textarea??name="introduction"id="introduction"?rows="5"?cols="27">一句話介紹自己...</textarea>?????????????<p><input?type="submit"value="提交申請"></p>?????????</form>??????</body>??</html>??
<%@ page contentType="text/html;charset=gb2312" %>
<html><head><title>中文亂碼——JSP頁面傳遞中文參數時</title></head><body><h2>申請賬號:</h2><form action="userMsg.jsp" method="POST"><p>郵箱:?<input type="text"name="email" id="email"/><p/><p>昵稱:?<input type="text"name="nickname" id="nickname"/><p/><p>密碼:?<input type="password"name="password" id="password"/><p/><p>性別:?<input type="radio"name="sex" id="sex"value="男" /> 男<input type="radio" name="sex"id="sex" value="女" /> 女<p/><textarea name="introduction"id="introduction" rows="5" cols="27">一句話介紹自己...</textarea><p><input type="submit"value="提交申請"></p></form></body>
</html>
個人信息頁面:
[html] view plaincopyprint?
<%@?page?contentType="text/html;charset=gb2312"?%>??<html>??????<head>?????????<title>中文亂碼——JSP頁面傳遞中文參數時?</title>??????</head>??????<body>?????????<center>?????????????<h2>用戶信息:</h2>?????????????<%?String?email?=?request.getParameter("email");?%>?????????????<%?String?nickname?=?request.getParameter("nickname");?%>?????????????<%?String?password?=?request.getParameter("password");?%>?????????????<%?String?sex?=?request.getParameter("sex");?%>?????????????<%?String?introduction?=?request.getParameter("introduction");%>?????????????<p>郵箱:?<%?out.print(email);?%><p/>?????????????<p>昵稱:?<%?out.print(nickname);?%><p/>?????????????<p>密碼:?<%?out.print(password);?%><p/>?????????????<p>性別:?<%?out.print(sex);?%><p/>?????????????<p>個人介紹:<%out.print(introduction);?%></p>?????????</center>??????</body>??</html>??
<%@ page contentType="text/html;charset=gb2312" %>
<html><head><title>中文亂碼——JSP頁面傳遞中文參數時 </title></head><body><center><h2>用戶信息:</h2><% String email = request.getParameter("email"); %><% String nickname = request.getParameter("nickname"); %><% String password = request.getParameter("password"); %><% String sex = request.getParameter("sex"); %><% String introduction = request.getParameter("introduction");%><p>郵箱:?<% out.print(email); %><p/><p>昵稱:?<% out.print(nickname); %><p/><p>密碼:?<% out.print(password); %><p/><p>性別:?<% out.print(sex); %><p/><p>個人介紹:<%out.print(introduction); %></p></center></body>
</html>
運行結果:
解決方法:修改個人信息頁面如下
[html] view plaincopyprint?
<%@?page?contentType="text/html;charset=gb2312"?%>??<html>??????<head>?????????<title>中文亂碼——JSP頁面傳遞中文參數時?</title>??????</head>??????<body>?????????<h2>用戶信息:</h2>?????????<%?String?email?=?newString(request.getParameter("email").getBytes("ISO-8859-1"),?"gb2312");%>?????????<%?String?nickname?=?newString(request.getParameter("nickname").getBytes("ISO-8859-1"),?"gb2312");%>?????????<%?String?password?=?newString(request.getParameter("password").getBytes("ISO-8859-1"),?"gb2312");%>?????????<%?String?sex?=?newString(request.getParameter("sex").getBytes("ISO-8859-1"),?"gb2312");;%>?????????<%?String?introduction?=?newString(request.getParameter("introduction").getBytes("ISO-8859-1"),?"gb2312");;%>?????????<p>郵箱:?<%?out.print(email);?%><p/>?????????<p>昵稱:?<%?out.print(nickname);?%><p/>?????????<p>密碼:?<%?out.print(password);?%><p/>?????????<p>性別:?<%?out.print(sex);?%><p/>?????????<p>個人介紹:<%out.print(introduction);?%></p>??????</body>??</html>??
<%@ page contentType="text/html;charset=gb2312" %>
<html><head><title>中文亂碼——JSP頁面傳遞中文參數時 </title></head><body><h2>用戶信息:</h2><% String email = newString(request.getParameter("email").getBytes("ISO-8859-1"), "gb2312");%><% String nickname = newString(request.getParameter("nickname").getBytes("ISO-8859-1"), "gb2312");%><% String password = newString(request.getParameter("password").getBytes("ISO-8859-1"), "gb2312");%><% String sex = newString(request.getParameter("sex").getBytes("ISO-8859-1"), "gb2312");;%><% String introduction = newString(request.getParameter("introduction").getBytes("ISO-8859-1"), "gb2312");;%><p>郵箱:?<% out.print(email); %><p/><p>昵稱:?<% out.print(nickname); %><p/><p>密碼:?<% out.print(password); %><p/><p>性別:?<% out.print(sex); %><p/><p>個人介紹:<%out.print(introduction); %></p></body>
</html>
?
?
實例三、Servlet處理中文參數時
注冊頁面:
[html] view plaincopyprint?
<%@?page?contentType="text/html;charset=gb2312"?%>??<%@?page?import="test.UserMsg"%>??<html>??????<head>?????????<title>中文亂碼——JSP頁面傳遞中文參數時</title>??????</head>??????<body>?????????<h2>申請賬號:</h2>?????????<form?action="./UserMsg"?method="POST">?????????????<p>郵箱:?<input?type="text"name="email"?id="email"/><p/>?????????????<p>昵稱:?<input?type="text"name="nickname"?id="nickname"/><p/>?????????????<p>密碼:?<input?type="password"name="password"?id="password"/><p/>?????????????<p>性別:?<input?type="radio"name="sex"?id="sex"value="男"?/>?男???????????????????????????<input?type="radio"?name="sex"id="sex"?value="女"?/>?女<p/>?????????????<textarea??name="introduction"id="introduction"?rows="5"?cols="27">一句話介紹自己...</textarea>?????????????<p><input?type="submit"value="提交申請"></p>?????????</form>??????</body>??</html>??
<%@ page contentType="text/html;charset=gb2312" %>
<%@ page import="test.UserMsg"%>
<html><head><title>中文亂碼——JSP頁面傳遞中文參數時</title></head><body><h2>申請賬號:</h2><form action="./UserMsg" method="POST"><p>郵箱:?<input type="text"name="email" id="email"/><p/><p>昵稱:?<input type="text"name="nickname" id="nickname"/><p/><p>密碼:?<input type="password"name="password" id="password"/><p/><p>性別:?<input type="radio"name="sex" id="sex"value="男" /> 男<input type="radio" name="sex"id="sex" value="女" /> 女<p/><textarea name="introduction"id="introduction" rows="5" cols="27">一句話介紹自己...</textarea><p><input type="submit"value="提交申請"></p></form></body>
</html>
UserMsg.java(Servlet)
[java] view plaincopyprint?
package?test;?????importjava.io.IOException;??importjava.io.PrintWriter;??importjava.io.UnsupportedEncodingException;?????importjavax.servlet.http.HttpServlet;??importjavax.servlet.http.HttpServletRequest;??importjavax.servlet.http.HttpServletResponse;??public?classUserMsg?extends?HttpServlet{????????public?void?doGet(HttpServletRequestrequest,???????????????????HttpServletResponse?response){?????????????doPost(request,?response);????????}????????public?void?doPost(HttpServletRequestrequest,???????????????????HttpServletResponse?response){?????????????try?{???????????????????request.setCharacterEncoding("gb2312");?????????????}?catch?(UnsupportedEncodingExceptione)?{???????????????????e.printStackTrace();?????????????}?????????????PrintWriter?out?=?null;?????????????try?{???????????????????out?=?response.getWriter();?????????????}?catch?(IOException?e1)?{???????????????????e1.printStackTrace();?????????????}?????????????out.print("<html>");?????????????out.print("<body>");?????????????out.print("<h2>"?+"用戶信息:"+?"</h2>");?????????????out.print("<p>"+"郵箱:"+request.getParameter("email")+"<p/>");?????????????out.print("<p>"+"昵稱:"+request.getParameter("nickname")+"<p/>");?????????????out.print("<p>"+"密碼:"+request.getParameter("password")+"<p/>");?????????????out.print("<p>"+"性別:"+request.getParameter("sex")+"<p/>");?????????????out.print("<p>"+"個人介紹:"+request.getParameter("introduction")+"<p/>");?????????????out.print("</html>");?????????????out.print("</body>");????????}??}??
package test;importjava.io.IOException;
importjava.io.PrintWriter;
importjava.io.UnsupportedEncodingException;importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
public classUserMsg extends HttpServlet{public void doGet(HttpServletRequestrequest,HttpServletResponse response){doPost(request, response);}public void doPost(HttpServletRequestrequest,HttpServletResponse response){try {request.setCharacterEncoding("gb2312");} catch (UnsupportedEncodingExceptione) {e.printStackTrace();}PrintWriter out = null;try {out = response.getWriter();} catch (IOException e1) {e1.printStackTrace();}out.print("<html>");out.print("<body>");out.print("<h2>" +"用戶信息:"+ "</h2>");out.print("<p>"+"郵箱:"+request.getParameter("email")+"<p/>");out.print("<p>"+"昵稱:"+request.getParameter("nickname")+"<p/>");out.print("<p>"+"密碼:"+request.getParameter("password")+"<p/>");out.print("<p>"+"性別:"+request.getParameter("sex")+"<p/>");out.print("<p>"+"個人介紹:"+request.getParameter("introduction")+"<p/>");out.print("</html>");out.print("</body>");}
}
運行結果:
解決方法:在doPost中加入:
[java] view plaincopyprint?
response.setContentType("text/html;?charset=gb2312");??
=======================
另外就是讀取流時使用的編碼
InputStream is = request.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is,"GBK"));
?
http://www.blogjava.net/blackbat/archive/2006/10/12/74865.html
總結
以上是生活随笔為你收集整理的常见JSP中文乱码例子及其解决方法的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。