本文以 utf-8 為例
-
IDE 設定:
- Windows->Preferances ->General->Content Types->Text ->Default encoding: 填入 utf-8, 設定源檔案及工程各種類型檔案本身的編碼。設定後Text下面的子類型大部分都随之改變,如css、html、java,但JSP還是預設以前的編碼,需要進一步單獨修改為utf-8
- Windows->Preferances ->General->Workspace->Text file encoding 在othe中選擇utf-8,這是設定源檔案本身的存儲編碼。
- Windows->Preferances ->Genaral->Editors->Text Editors->Spelling >> Encoding 這是拼寫檢查字典所用的編碼,可不管。
- Windows->Preferances ->Files and Editors 這裡可以設定各種類型源檔案的編碼,如JSP ->Encoding 設定為:ISO 10646/Unicode(UTF-8),這個和2的作用應該一樣,可能是為了相容Eclipse的選項。Eclipse 對應選項為 Preferances->web
-
項目設定:
右鍵單擊項目->Properties->Resource->Text file encoding :這個預設的是上面IDE-2中所設定。如果預設不是UTF-8,則要點選Other進行選擇。也可以對某個具體檔案進行右鍵修改操作。
代碼
-
JSP頁面中顯示的編碼
<%@ page language="java" pageEncoding="utf-8"%> <%@ page contentType="text/html;charset=utf-8"%> <meta http-equiv="Content-Type" content="text/html charset=utf-8">
- 第一行 pageEncoding="UTF-8" 是指JSP頁面存儲時的編碼。
- 第二行 charset=utf-8 指JSP頁面輸入輸出使用的編碼,也就是解碼所用格式,如果不指定就用預設的iso8859-1。很多伺服器在沒有找到pageEncoding時,将charset代替pageEncoding
- 第三行 charset=utf-8 指定浏覽器的解碼方式,如果前面指定編碼一緻且無誤,這裡可以不設定,如果沒有第二行,則需要設定此編碼。
如果表單輸入是中文,送出的時候,doPost 處理函數中 request.getParameter("xxx") 取得的可能是亂碼,解決方法有兩種:
- JSP頭部加上
<%request.setCharacterEncoding("utf-8");%>
- request.getParameter("xxx") 前面加一句 setCharacterEncoding,即
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("utf-8"); String name = request.getParamete("name"); // ..... }
另外注意:MyEclipse (我用的是 2017 stable 1)建立HTML時,如果選擇HTML5 ,無論怎麼設定編碼,中文還是會亂碼。自動生成的 Meta如下:
<meta name="keywords" content="keyword1,keyword2,keyword3"> <meta name="description" content="this is my page"> <meta name="content-type" content="text/html; charset=UTF-8">
解決方法是 将 name 改為 http-equiv. 可以隻修改第三行。
另外有兩篇博文可以參考: http://peter8015.iteye.com/blog/1954379
http://www.cnblogs.com/chengkai/articles/2171848.html