javax.servlet.ServletException: weblogic.servlet.jsp.CompilationException: Failed to compile JSP /WEB-INF/content/intro.jsp
messages.tag:2:30: The encoding specified on the page cannot be different than detected encoding for the file.
<%@ tag body-content="empty" pageEncoding="utf-8" %>
^----------^
如果我删除标记文件中的pageEncoding属性,它可以正常工作。但我认为这不是一个解决方案,因为它已经可以在另一个Weblogic服务器上运行。所以问题在于我的Weblogic配置。通过谷歌搜索错误,我没有找到任何东西。
有什么想法吗?我已经尝试在weblogic.xml中将编码设置为UTF-8以及许多其他我甚至无法记住的事情,我已经有一段时间了。
答案 0 :(得分:2)
WebLogic 需要严格的编码。因此,在jsp中的任何其他声明之前,将页面编码标记添加为第一个声明。它解决了我的问题。
自:
<%@ page import="com.abc.xyz.Helperjsp"%>
<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8" %>
要:
<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8" %>
<%@ page import="com.abc.xyz.Helperjsp"%>
答案 1 :(得分:1)
确保/WEB-INF/content/intro.jsp的内容也是UTF-8编码。
答案 2 :(得分:0)
扩展KarthikN的answer和我自己的comment。
必须注意的是,重要的一点是包含pageEncoding
的指令必须是JSP页面上的第一个声明。正如我的评论所述:
这不仅仅是重新排列这两行。实际上,它甚至不是重新排列,而是更像将指令移到其他一切的顶端。 [...]这意味着您不能拥有JSP块,JSP指令,JSP注释或之前的任何内容。
例如,如果您提供错误的现有JSP页面是:
<%-- Some JSP comment --%>
<% /* (OR) Some Java comment in JSP block */ %>
<%@ page import="com.abc.xyz.Helperjsp"%>
<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8" %>
我误解了KarthikN的例子并简单地交换了两条线。它无效:
<%-- Some JSP comment --%>
<% /* (OR) Some Java comment in JSP block */ %>
<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8" %>
<%@ page import="com.abc.xyz.Helperjsp"%>
当指令置于其他所有位置之上时,工作:
<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8" %>
<%-- Some JSP comment --%>
<% /* (OR) Some Java comment in JSP block */ %>
<%@ page import="com.abc.xyz.Helperjsp"%>
虽然KarthikN的回答提到了这一点(“将页面编码标签添加为jsp”中任何其他声明之前的第一个声明),但提供的示例并没有明确说明。