Page-encoding specified in XML prolog (UTF-8) is different from that specified in page directive (utf-8)

解决因页面指定的UTF-8编码与实际使用的utf-8不一致导致的JasperException异常。通过调整编码格式,确保前后端编码一致。

Page-encoding specified in XML prolog (UTF-8) is different from that specified in page directive(utf-8)问题

 

项目部署到我的机子上,可以运行,但在打开一些页面时会出现错误:org.apache.jasper.JasperException:/htpec/pecNodeComponentUpdate.jsp(1,1) Page-encoding specified in XML prolog(UTF-8) is different from that specified in page directive(utf-8)。

 

   这个项目事先是可以正确运行的,在我的环境下也设置为utf-8编码,没理由呀!我试着把页面重编译了一次,结果错误依旧。难道utf-8和UTF-8还有区别?我又把页面的utf-8改成UTF-8,然后运行,结果竟然行了,utf-8和UTF-8识别还不一样?真有点苦笑不得了,不过还是记下来。

 

可能原因,原先可能用记事本把pecNodeComponentUpdate.jsp打开,然后保存时选用了UTF-8编码,因此在pecNodeComponentUpdate.jsp页面用utf-8保存时就会出现上述情况,因此我们在用记事本编码代码时注意保存的编码格式

 

 

from :http://hi.baidu.com/xxfang_jx/blog/item/87fe54c2e7c4801d0ff4772f.html/cmtid/994f4c31ee5037a65edf0ecd

### 问题分析 在开发过程中,当XML prolog中指定的编码与page directive中指定的编码不一致时,会导致编码冲突问题。例如,XML prolog指定为UTF-8,而page directive指定为GBK,这将引发类似`org.apache.jasper.JasperException`的异常[^2]。为了解决这一问题,需要确保编码的一致性。 --- ### 解决方案 #### 1. 统一编码设置 为了消除编码冲突,建议将所有相关配置的编码统一为同一标准。通常推荐使用UTF-8作为默认编码,因为它支持更广泛的字符集,并且是Web开发中的通用标准[^1]。 - **修改XML prolog** 确保XML声明中的编码与实际使用的编码一致。例如: ```xml <?xml version="1.0" encoding="UTF-8"?> ``` - **修改JSP页面指令** 在JSP文件中,通过`<%@ page %>`指令明确指定编码为UTF-8: ```jsp <%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8" %> ``` - **检查web.xml配置** 如果项目中使用了`jsp-property-group`,也需要确保其编码设置与XML prologpage directive一致。例如: ```xml <jsp-config> <jsp-property-group> <url-pattern>*.jsp</url-pattern> <page-encoding>UTF-8</page-encoding> </jsp-property-group> </jsp-config> ``` --- #### 2. 验证服务器端编码配置 除了前端配置外,还需要检查服务器端的编码设置是否正确。例如,在Tomcat服务器中,可以通过以下方式确保编码一致性: - **修改server.xml** 在Tomcat的`server.xml`文件中,确保`Connector`元素的`URIEncoding`属性设置为UTF-8: ```xml <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8" /> ``` - **检查JVM参数** 如果项目运行在Java虚拟机上,可以通过设置JVM参数来强制使用UTF-8编码。例如: ```bash -Dfile.encoding=UTF-8 ``` --- #### 3. 调整内存配置(可选) 如果项目规模较大或存在性能瓶颈,可以参考提供的堆内存配置[^3],适当调整JVM的内存参数以优化性能。例如: ```bash -Xms512m -Xmx2048m -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m ``` --- ### 示例代码 以下是统一编码后的完整示例: ```xml <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1"> <jsp-config> <jsp-property-group> <url-pattern>*.jsp</url-pattern> <page-encoding>UTF-8</page-encoding> </jsp-property-group> </jsp-config> </web-app> ``` ```jsp <%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8" %> <html> <head> <title>Example Page</title> </head> <body> <p>This is an example of a JSP page with consistent encoding.</p> </body> </html> ``` --- ### 注意事项 - 如果项目中存在大量已有的GBK编码文件,建议逐步迁移到UTF-8,避免一次性修改导致兼容性问题。 - 在修改编码后,务必进行全面测试,确保不会引入新的问题。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值