1. 程式人生 > >解決JSP中文亂碼

解決JSP中文亂碼

JSP編碼設定:

將建立的JSP程式碼的(預設在第一行)

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>

替換成

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

HTML編碼設定:

因為JSP中也包含HTML的內容,HTML本身也是有編碼格式的。
將HTML的charset的值改為和JSP編碼一致,如UTF-8:

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

Request中文亂碼:

有時候在做jsp邏輯處理時,比如提交表單,從前臺註冊的頁面提交了一部分的資料,但是後面處理的JSP頁面通過 request.getParameter 呼叫時,獲取到的是一堆亂碼。

這是因為雖然前面JSP設定了編碼格式,卻沒有在當前的JSP中設定讀取資料的編碼格式。

使用下面的程式碼,就可以是設定request獲取請求內容的資料編碼:

request.setCharacterEncoding("utf-8"
);

URL傳參中文亂碼:

這裡我們需要配置tomcat伺服器檔案,才能解決這個問題。具體方法是,在tomcat的conf目錄下找到server.xml配置檔案,找到如下程式碼:

<span style="font-size:18px"> <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /></span>

在後面新增上編碼方式,URIEncoding=”gb2312”或者utf-8 重新啟動Tomcat問題就解決了。

POST中文亂碼:

在Tomcat中,對於以POST方式提交的表單編碼格式預設為ISO-8859-1的編碼格式,而這種編碼格式是不能編碼中文的,所以就會出現亂碼的現象。對於這種情況,我們可以對錶單中的資料進行處理,在取得表單引數的時候設定編碼方式,我們更改了我們的接受表單資料的頁面如下所示:

<% new String(userName.getBytes("ISO-8859-1"),"gb2312") %>  

如:

<%  
    String userName = request.getParameter("userName");  
    String passWord = request.getParameter("password");  
    out.println("表單輸入的userName值為:" +  new String(userName.getBytes("ISO-8859-1"),"gb2312")+"<br>");  
    out.println("表單輸入的pasword值為:" + new String(passWord.getBytes("ISO-8859-1"),"gb2312")+"<br>");  
 %>