4

だから私はいくつかの.jspファイルを持っています:

ファイルの1つに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 paramsでも同様の問題が発生し、次のようにハッキングしました。

main.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>

other.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

param値は動的でしょうか?。そうでない場合は、「í」を

&#237;

于 2012-11-13T13:44:24.730 に答える
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 に答える