在jsp中使用<%@include file="in.html" %>導入html頁面時,如果html頁面里有中文,就會產生亂碼。檢查jsp文件和html文件的編碼,編碼一致,都是統一使用的utf-8,檢查生成的Servlet類文件,發現里面直接就亂碼了。
jsp頁面內容:
[html] view plain copy通過上面生成的Servlet內容可以看出,在將jsp文件編譯成Java類這一過程就出現了亂碼,問題肯定是編碼一致的,而設置編碼的有兩個:pageEncoding和contentType,這兩個屬性的區別如下:
pageEncoding是jsp文件本身的編碼,是指定web容器將jsp編譯成java文件時采用什么編碼讀取jsp文件。
contentType的charset設置的編碼是指服務器發送給客戶端時的內容編碼。
而客戶端訪問一個jsp文件要經過如下三個階段:
1、(第一次訪問時)web容器將jsp編譯成java文件,這個階段編譯器會根據pageEncoding設置的編碼讀取jsp文件,翻譯成統一的utf-8的Servlet類,如果pageEncoding設置錯誤或未設置,編譯出來的java文件就會出現中文亂碼。
2、由javac將java方法二:在web.xml里統一配置pageEncoding的編碼,在web-app標簽里添加如下配置:
[html] view%20plain copy新聞熱點
疑難解答