4

所以我有几个 .jsp 文件:

其中一个文件具有 head 标签并具有页面标题:

<%@ page pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>${param.title}</title>
</head>

其他文件包括第一个文件并使用 jsp:param 将参数传递给它:

<%@ page pageEncoding="UTF-8"%>
<jsp:include page="consoleheader.jsp">
    <jsp:param name="title" value="Título"/>
</jsp:include>
<body>
...
</body>
</html>

当我这样做时,我使用 jsp:param 传递的任何非 ASCII 字符都会出现乱码(例如 Título 中的 í)。在其他任何地方都可以正常工作。所有 jsp 文件都使用 UTF-8 编码。我没有在我的 JVM 上设置任何字符集配置。任何人都知道如何在不手动设置 JVM 编码的情况下解决这个问题?

4

3 回答 3

4

我对 jsp 参数也有类似的问题,并通过以下方式对其进行了破解:

主.jsp:

<%@ page pageEncoding="UTF-8"%>
<html>
<head/>
  <body>
    <jsp:include page="other.jsp">
      <%-- í = &iacute; --%>
      <jsp:param name="title" value="T&iacute;tulo"/>
    </jsp:include>
  </body>
</html>

其他.jsp

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page pageEncoding="UTF-8"%>
<h1><c:out value="${param.title}" escapeXml="false"/></h1>


我知道这不是最好的解决方案,但它对我有用。


编辑

我找到了另一个也可以为您工作的解决方案:

在 jsp:include 之前添加 setCharacterEncoding 行就可以了。
<% request.setCharacterEncoding("utf-8"); %>

于 2015-08-04T15:05:35.637 回答
1

在这里使用 JSTL。虽然它更冗长:

“头”:

<%@ page pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>${title}</title>
</head>

“身体”:

<%@ page pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<c:set var="title" scope="request" value="Título"/>
<jsp:include page="consoleheader.jsp">
<body>
...
</body>
</html>
于 2012-11-13T15:45:14.433 回答
1

参数值可以是动态的吗?. 如果不是,请将“í”替换为

&#237;

于 2012-11-13T13:44:24.730 回答