問題:
JSP頁面中聲明瞭contentType="text/html; charset=UTF-8"
被include的靜態html中也包含了<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
但顯示時JSP部分的能正常顯示,被包含的部分卻是亂碼,而單獨去瀏覽html頁面部分卻又是正常的,瀏覽器會自動選擇utf-8編碼,唯獨兩個混合在一起時不能全部正常,明明兩個都設置爲UTF-8了。
解決方法:
在項目的web.xml中加入下面語句:
<jsp-config>
<jsp-property-group>
<description>
Special property group for JSP Configuration HTML
example.
</description>
<display-name>JSPConfiguration</display-name>
<url-pattern>*.html</url-pattern>
<el-ignored>true</el-ignored>
<page-encoding>UTF-8</page-encoding>
<scripting-invalid>false</scripting-invalid>
<include-prelude></include-prelude>
<include-coda></include-coda>
</jsp-property-group>
</jsp-config>
續:
用了上面的解決辦法之後,發現JSP include的HTML頁面刷新後無法實時獲取到更新內容了,即使HTML頁面發生了改變也看不到更新內容,甚至直接訪問該HTML頁面也無法更新!本來以爲是緩存問題,於是加上了很多禁止緩存的語句,但是均不起作用。
唯獨去掉上面加入web.xml的內容雖然又回到亂碼狀態,但卻可以刷新出最新內容。
我在所有JSP頁面,HTML頁面,代碼文件均使用了UTF-8編碼,按理來說不該出現亂碼的,最後注意到Eclipse中編碼頁面有個選項是inherit from container(GBK),可見容器的編碼並不是UTF-8,於是修改了Eclipse中設置:
改變整個工作空間的編碼格式,這樣以後新建的文件也是新設置的編碼格式。
eclipse->window->preferences->General->workspaceTypes->Other->UTF-8->OK
終於恢復正常,不亂碼了,也可以更新頁面內容了!
附Eclipse編碼設置:http://kodak-zhou.iteye.com/blog/1004722