簡單解決jsp中文亂碼問題

簡單解決jsp中文亂碼問題

初學jsp製做一個簡單的響應頁面
具體代碼以下:
html

<form action="test.jsp">
    username : <input type="text" name="username" />
    <br />
    <input type="submit">
</form>
 Hello <%=request.getParameter("username")%>

保存爲test.jsp文件,啓動tomcat訪問,出現下圖:windows

在這裏插入圖片描述
在框內輸入:vae 出現下圖:
瀏覽器

在這裏插入圖片描述
但是"username"看起來實在不舒服,決定將它改爲"用戶名"
tomcat

<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位,三字節。瀏覽器在不知道肯定編碼方式的狀況下,就會把這些字符從中間截斷,再顯示的時候就亂掉了。因此,想要解決亂碼問題,就是要告訴瀏覽器咱們到底使用了什麼樣的編碼方式。
jsp

而windows下,文件默認的編碼格式是gb2312
解決方法以下:
(1)在http的響應(response)中添加編碼信息

ui

<%@ page contentType="text/html; charset=gb2312"%>

這段要放在jsp頁面的第一行,用來指定響應的類型和編碼格式,contentType爲text/html就是html內容,charset表示編碼爲gb2312。這樣瀏覽器就能夠從響應中得到編碼格式了。編碼

(2)在html中指定編碼格式spa

<head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>title</title>
</head>

meta部分用來指定當前html的編碼格式,注意這一段要放在head標籤中,而且放到head標籤的最前面,若是不是最前面ie下可能會出現問題,尤爲是在title中有中文的狀況下。code

上述兩段檢驗是爲了保證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>

再次運行:

在這裏插入圖片描述

相關文章
相關標籤/搜索