天天看點

MyEclipse 有關中文亂碼問題解決方法

本文以 utf-8 為例

  • IDE 設定:

  1. Windows->Preferances ->General->Content Types->Text ->Default encoding: 填入 utf-8, 設定源檔案及工程各種類型檔案本身的編碼。設定後Text下面的子類型大部分都随之改變,如css、html、java,但JSP還是預設以前的編碼,需要進一步單獨修改為utf-8
  2. Windows->Preferances ->General->Workspace->Text file encoding  在othe中選擇utf-8,這是設定源檔案本身的存儲編碼。
  3. Windows->Preferances ->Genaral->Editors->Text Editors->Spelling >> Encoding  這是拼寫檢查字典所用的編碼,可不管。
  4. 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">
           
  1. 第一行 pageEncoding="UTF-8" 是指JSP頁面存儲時的編碼。
  2. 第二行 charset=utf-8 指JSP頁面輸入輸出使用的編碼,也就是解碼所用格式,如果不指定就用預設的iso8859-1。很多伺服器在沒有找到pageEncoding時,将charset代替pageEncoding
  3. 第三行 charset=utf-8 指定浏覽器的解碼方式,如果前面指定編碼一緻且無誤,這裡可以不設定,如果沒有第二行,則需要設定此編碼。

         如果表單輸入是中文,送出的時候,doPost 處理函數中 request.getParameter("xxx") 取得的可能是亂碼,解決方法有兩種:

  1. JSP頭部加上
    <%request.setCharacterEncoding("utf-8");%>
          
  2. 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

繼續閱讀