jsp(SUN企業級應用的首選)頁面編碼問題研究
曾經有一個網友問過我這樣一個問題:
<%@page contentType="text/html; charset=UTF-8"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
中國
</body>
</html>
這個頁面在為什麼在運行的時候“中國”會變成亂碼?
對於上面問題的分析需要從整個jsp(SUN企業級應用的首選)頁面請求的生命周期來看,一般的都需要經歷下面幾個階段:
1。應用服務器根據jsp(SUN企業級應用的首選)頁面生成一個Java文件
2。應用服務器調用java.exe將Java文件編譯成一個Servlet對應的class文件
3。用戶的浏覽器請求jsp(SUN企業級應用的首選)對應的Servlet,Web容器起一個線程執行Servlet,將數據返回給客戶端浏覽器
4。用戶的IE根據返回的數據,將結果顯示給用戶。
為了更好的了解編碼問題,我們暫時先從上面的四個環節一步步來分析,根據分析的結果,來得到最終的解決辦法。
1. 在應用服務器根據jsp(SUN企業級應用的首選)頁面生成Java文件階段。
應用服務器會將整個jsp(SUN企業級應用的首選)頁面的代碼讀取出來,然後寫到一個新的JAVA文件中,在讀文件和寫文件的時候都牽涉到一個編碼問題,這個編碼問題應用服務器是如何解決的呢?我研究tomcat(一個很好用的JSP運行平台)應用服務器的源代碼,發現tomcat(一個很好用的JSP運行平台)中有一個pageEncoding