1. 程式人生 > >如何解決jsp:include標籤在包含html檔案時遇到的亂碼問題

如何解決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>
<page-encoding>UTF-8</page-encoding>
</jsp-property-group>
</jsp-config>

個人推薦第三種方法,因為有時候在程式中,我們是通過某種辦法動態生成html內容的。新增指令未必是個方便的動作。