字符封面问题

时间:2016-03-11 10:40:41

标签: java utf-8 character-encoding jsp-tags

我有一个jsp。我将字符集从"charset=UTF-8"更改为"charset=ISO-8859-1"

我改变了这个旧的:

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

改为新:

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

然后出现了这个错误:

[3/10/16 11:05:37:985 IST] 000000ba WebApp        E   [Servlet Error]-[/WEB-INF/views/issuerLocaleMap.jsp]: com.ibm.ws.jsp.translator.JspTranslationException: JSPG0228E: Exception caught while translating /WEB-INF/views/issuerLocaleMap.jsp: error in statically included file 
/WEB-INF/views/header.jsp(1,1) --> JSPG0120E: Illegal to specify different values for pageEncoding attribute and configuration element for matching URI pattern. directive: "[ISO-8859-1]" configuration: "[UTF-8]"

    at com.ibm.ws.jsp.translator.visitor.validator.ValidateJspVisitor.visitPageDirectiveStart(ValidateJspVisitor.java:202)
    at com.ibm.ws.jsp.translator.visitor.JspVisitor.processJspElement(JspVisitor.java:153)
    at com.ibm.ws.jsp.translator.visitor.JspVisitor.processChildren(JspVisitor.java:309)
    at com.ibm.ws.jsp.translator.visitor.JspVisitor.processJspElement(JspVisitor.java:139)
    at com.ibm.ws.jsp.translator.visitor.JspVisitor.visit(JspVisitor.java:121)
    at com.ibm.ws.jsp.translator.JspTranslator.processVisitors(JspTranslator.java:127)
    at com.ibm.ws.jsp.translator.utils.JspTranslatorUtil.translateJsp(JspTranslatorUtil.java:230)
    at com.ibm.ws.jsp.translator.utils.JspTranslatorUtil.translateJspAndCompile(JspTranslatorUtil.java:114)
    at com.ibm.ws.jsp.webcontainerext.AbstractJSPExtensionServletWrapper.translateJsp(AbstractJSPExtensionServletWrapper.java:502)
    at com.ibm.ws.jsp.webcontainerext.AbstractJSPExtensionServletWrapper._checkForTranslation(AbstractJSPExtensionServletWrapper.java:429)
    at com.ibm.ws.jsp.webcontainerext.AbstractJSPExtensionServletWrapper.checkForTranslation(AbstractJSPExtensionServletWrapper.java:291)
    at com.ibm.ws.jsp.webcontainerext.AbstractJSPExtensionServletWrapper.handleRequest(AbstractJSPExtensionServletWrapper.java:146)
    at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.forward(WebAppRequestDispatcher.java:321)
    at org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:238)
    at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:262)
    at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1180)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:950)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
    at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:789)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:763)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
    at com.ibm.ws.cache.servlet.ServletWrapper.serviceProxied(ServletWrapper.java:282)
 <br>

我从http://www.satollo.net/jsp-and-the-content-type-charset-and-the-page-encoding-attribute

了解了这一点

这两个编码是独立的,您可以使用UTF-8将JSP保存在磁盘上,并要求容器使用另一个字符集与浏览器进行通信,例如ISO-8859-15

那么这个错误背后的原因是什么?

1 个答案:

答案 0 :(得分:0)

如果包含的JSP中的pageEncoding指令与主JSP中指定的值不同,则Servlet容器会引发错误。 (contentType指令相同)。