怎樣解決jsp:include標簽在包括html文件時遇到的亂碼問題
在一個JSP頁面中,經常須要包括還有一個文件,JSP為我們提供了jsp:include標簽能夠完畢這個功能,比方:<jsp:include page="some.jsp"></jsp:include>,在自己定義Tag中。我們能夠通過pageContext.include(file);的方式來實現和jsp:include相同的效果。可是假設被包括的是一個html文件。我們就非常有可能遇到亂碼的問題,比方本來的jsp頁面中使用了UTF-8編碼,html中的內容也採用了UTF-8編碼,最後執行時卻發現jsp的輸出中。include的部分是亂碼。
原因是這種,當jsp在include的時候,被include的內容使用何種編碼是由被include頁面自身決定的,而決定方式是通過<%@ page lanage="java" pageEncoding="UTF-8" contentType="text/html;UTF-8" %>這種指令來決定的,而html頁面中並沒有這種指令。所以解決的方法例如以下:
第一種辦法:就是不要include html頁面,改成include jsp頁面
另外一種辦法:為被包括的html文件也在第一行加入如jsp一樣的指令<%@ page lanage="java" pageEncoding="UTF-8" contentType="text/html;UTF-8" %>
第三種辦法:在web.xml中通過配置來告訴web應用,全部html文件輸出時都採用UTF-8的編碼,配置內容例如以下:
<jsp-config>
<jsp-property-group>
<url-pattern>*.html</url-pattern>
</jsp-property-group>
</jsp-config>
個人推薦第三種方法,由於有時候在程序中,我們是通過某種辦法動態生成html內容的。加入指令未必是個方便的動作。
怎樣解決jsp:include標簽在包括html文件時遇到的亂碼問題