Weblogic引发编译异常 javax.servlet.ServletException:weblogic.servlet.jsp.CompilationException:未能编译jsp/WEB-INF/content/intro.jsp messages.tag:2:30:页面上指定的编码不能与检测到的文件编码不同。 ^----------^

Weblogic引发编译异常 javax.servlet.ServletException:weblogic.servlet.jsp.CompilationException:未能编译jsp/WEB-INF/content/intro.jsp messages.tag:2:30:页面上指定的编码不能与检测到的文件编码不同。 ^----------^,java,jsp,jakarta-ee,weblogic,Java,Jsp,Jakarta Ee,Weblogic,若我删除标记文件中的pageEncoding属性,它就会工作。但我认为这不是一个解决方案,因为它已经在另一个Weblogic服务器上工作了。所以问题在于我的Weblogic配置。通过谷歌搜索错误,我没有发现任何东西 有什么想法吗?我曾尝试在weblogic.xml中将编码设置为UTF-8,还有许多我甚至记不起来的事情,我已经有一段时间遇到了这个问题。请确保/WEB-INF/content/intro.jsp的内容也是UTF-8编码的。weblogic需要严格的编码。因此,在jsp中的任何其他声明

若我删除标记文件中的pageEncoding属性,它就会工作。但我认为这不是一个解决方案,因为它已经在另一个Weblogic服务器上工作了。所以问题在于我的Weblogic配置。通过谷歌搜索错误,我没有发现任何东西


有什么想法吗?我曾尝试在weblogic.xml中将编码设置为UTF-8,还有许多我甚至记不起来的事情,我已经有一段时间遇到了这个问题。

请确保/WEB-INF/content/intro.jsp的内容也是UTF-8编码的。

weblogic需要严格的编码。因此,在jsp中的任何其他声明之前添加页面编码标记作为第一个声明。它为我解决了问题

发件人:


致:


扩展KarthikN和我自己的

必须注意的是,重要的一点是,包含
pageEncoding
的指令必须是JSP页面上的第一个声明。如我在评论中所述:


这不仅仅是重新排列这两条线。事实上,这甚至不是一个重新安排,但更像是将该指令移动到其他所有指令的最顶端。[…]这意味着您不能拥有JSP块、JSP指令、JSP注释或任何之前的内容

例如,如果提供错误信息的现有JSP页面为:

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" %>
                             ^----------^

我误解了KarthikN的例子,只是简单地交换了两行。它不起作用:

<%-- 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" %>
<%-- 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"%>

当指令被置于一切之上时,它起作用了:

<%-- 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" %>
<%-- 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"%>


尽管KarthikN的回答提到了这一点(“在jsp中的任何其他声明之前添加页面编码标记作为第一个声明”),但提供的示例并没有明确说明这一点。

确实如此。问题在于Weblogic配置,而不是应用程序。@Enno:在FTP传输到服务器主机之前或之后,它们是否正确?这不仅仅是重新排列这两行。事实上,这甚至不是一个重新安排,但更像是将该指令移动到其他所有指令的最顶端。包含
pageEncoding
的JSP指令必须是文件中的第一项。这意味着您不能拥有JSP块、JSP指令、JSP注释或任何之前的内容。