jsp include文件时的一个乱码解决方法

当使用JSP引入外部文件时,有可能因为字符编码不一致导致引入的文件出现乱码。下面是一种解决方案。

当使用JSP引入外部文件时,有可能因为字符编码不一致导致引入的文件出现乱码。下面是一种解决方案。

一、问题描述

当在一个JSP页面中引入一个外部文件时,例如在header.jsp文件中引入了footer.jsp文件:

<jsp:include page="footer.jsp" />

然后我们发现,引入的footer.jsp文件出现了乱码,而且这个乱码不是正常的中文或英文乱码,而是类似于“%82%71%ED%5D%40”等特殊字符的乱码。

这是因为在header.jsp和footer.jsp文件的字符编码不匹配所造成的。

二、解决方案

1.使用pageEncoding属性

在jsp引入文件的时候,使用pageEncoding属性指定编码,例如:

<jsp:include page="footer.jsp" pageEncoding="UTF-8" />

这样就可以避免由于字符编码不匹配而引起的乱码问题。

2.在引入的文件中设置字符编码

另外的解决方案是在引入的footer.jsp文件中设置字符编码:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

这样就可以保证引入的footer.jsp文件中的中文不会乱码。

三、示例说明

示例一

在header.jsp文件中引入footer.jsp文件,并设置编码为UTF-8:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Header Page</title>
</head>
<body>
<jsp:include page="footer.jsp" pageEncoding="UTF-8" />
</body>
</html>

在footer.jsp文件中设置编码为UTF-8:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<footer>
    <p>版权所有 © 2021 MyWebsite.com . All Rights Reserved.</p>
</footer>

示例二

在header.jsp文件中引入footer.jsp文件,不设置编码:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Header Page</title>
</head>
<body>
<jsp:include page="footer.jsp" />
</body>
</html>

在footer.jsp文件中设置编码为UTF-8:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<footer>
  <p>版权所有 © 2021 MyWebsite.com . All Rights Reserved.</p>
</footer>

此时在浏览器中查看页面发现footer.jsp文件中的文字出现乱码,但是如果我们在header.jsp文件中设置编码为UTF-8:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Header Page</title>
</head>
<body>
<jsp:include page="footer.jsp" />
</body>
</html>

这样引入的footer.jsp文件就不会出现乱码了。

本文标题为:jsp include文件时的一个乱码解决方法

基础教程推荐