## 簡單解決jsp中文亂碼問題 初學jsp製作一個簡單的響應頁面 具體代碼如下: ``` username : Hello ``` 保存為test.jsp文件,啟動tomcat訪問,出現下圖: ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20201101104 ...
簡單解決jsp中文亂碼問題
初學jsp製作一個簡單的響應頁面
具體代碼如下:
<form action="test.jsp">
username : <input type="text" name="username" />
<br />
<input type="submit">
</form>
Hello <%=request.getParameter("username")%>
保存為test.jsp文件,啟動tomcat訪問,出現下圖:
在框內輸入:vae 出現下圖:
可是"username"看起來實在不舒服,決定將它改成"用戶名"
<form action="test.jsp">
用戶名 : <input type="text" name="username" />
<br />
<input type="submit">
</form>
Hello <%=request.getParameter("username")%>
這時問題出現:
本該出現"用戶名"的地方出現了一串亂碼:
所謂響應中的亂碼,就是顯示頁面上的亂碼,因為頁面數據是從伺服器一端放入響應(response)中,然後發送給瀏覽器,如果響應中的數據無法被正常解析,就會出現亂碼問題。
為什麼英文就沒有問題呢?因為在iso-8859-1,gb2312, utf-8以及任意一種編碼格式下,英文編碼格式都是一樣的,每個字元占8位,而中文就麻煩了,在gb2312下一個中文占16位,兩位元組,而在utf-8下一個中文要占24位,三位元組。瀏覽器在不知道確定編碼方式的情況下,就會把這些字元從中間截斷,再顯示的時候就亂掉了。所以,想要解決亂碼問題,就是要告訴瀏覽器我們到底使用了什麼樣的編碼方式。
而windows下,文件預設的編碼格式是gb2312
解決方法如下:
(1)在http的響應(response)中添加編碼信息
<%@ page contentType="text/html; charset=gb2312"%>
這段要放在jsp頁面的第一行,用來指定響應的類型和編碼格式,contentType為text/html就是html內容,charset表示編碼為gb2312。這樣瀏覽器就可以從響應中獲得編碼格式了。
(2)在html中指定編碼格式
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>title</title>
</head>
meta部分用來指定當前html的編碼格式,註意這一段要放在head標簽中,並且放到head標簽的最前面,如果不是最前面ie下可能會出現問題,尤其是在title中有中文的情況下。
上述兩段檢驗是為了保證jsp網頁輸出的是中文
改後代碼如下:
<%@ page contentType="text/html; charset=gb2312"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>title</title>
</head>
<body>
<form action="test.jsp">
用戶名 : <input type="text" name="username" />
<br />
<input type="submit">
</form>
</body>
</html>
再次運行: