1 JSP代碼如下: 2 <%@ page language="java" contentType="text/html; charset=UTF-8"
3 pageEncoding="UTF-8"%>
4 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
5 <html>
6 <head>
7 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
8 <title>Insert title here</title>
9 </head>
10 <body>
11 </html>
在這里面跟編碼類型有關的地方有3處:
1、jsp的page指令中contentType屬性(與pageEncoding是一樣的,如果MIME類型不是text/html,需用該屬性設置MIME類型及編碼),這個編碼指定了輸出html頁面的編碼。也就是由Servlet輸出返回給瀏覽器的顯示頁面
2、jsp的page指令中pageEncoding屬性(用戶在瀏覽器中右擊查看編碼所看到的編碼格式,默認MIME類型是text/html)
在生成的.java文件中為response.setContentType("text/html;charset=UTF-8");
這個編碼指定了JSP頁面的編碼類型,也就是保存成.jsp的字符文件的編碼類型,這個文件保存后會經過容器轉換,先轉換為.java也就是對應的java源文件(繼承相應的servlet)這個過程就是按照pageEncoding指定的編碼來讀取的。轉換成的.java文件以及后邊編譯后的.class文件的編碼都是規定的UTF-8編碼。
注意,如果這里的編碼格式不指定,就可能不被正確轉換為.java文件,這里jsp有區別於java文件,jsp文件到java文件沒有默認編碼轉換方式,沒有指定就沒法正確解析,而java文件到class文件的轉換有默認的編碼格式,即本地編碼格式,也就是說javac編譯工具默認會根據電腦系統的編碼格式進行解析java文件,這也是為什么記事本等系統自帶編輯器寫的代碼能被正確編譯的原因。
3、html中的<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
這里的編碼charset=UTF-8就是告訴瀏覽器,我返回給你的HTML頁面編碼格式是什么,這樣瀏覽器就可以按照正確的編碼格式來解析HTML頁面了。
總結:
1中的編碼類型一定要和3中的一致,而2中的類型無所謂,可根據自己頁面中包含的字符類型選擇合適的編碼格式。
另外,在java源碼中也可以設置編碼格式,可以做轉碼操作。