本文主要是介绍sitemesh的字符编码问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
今天帮朋友解决了一个sitemesh很奇怪的字符编码问题。开发环境是NetBeans 4.1 + Tomcat。之前在此环境下开发的Web项目很正常,最近朋友决定使用sitemesh来管理页面,结果问题出来了:CSS、HTML、JSP等文件均没问题,但就是不能显示图像。并且每刷新一下页面,Tomcat就会报错:
严重: Javac exception
Compile failed; see the compiler error output for details.
...
at com.mike.Filter.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:51)
...
...vcss_bmp.java:45: 非法的表达式开始
...vcss_bmp.java:45: 非法字符: /15
...
看来问题出在字符编码上,检查页面编码,全设为gb2312,应该没问题,再检查web.xml,共有两处设置编码的地方。
第一个:
<filter>
<filter-name>setCharacterEncoding</filter-name>
<filter-class>com.mike.Filter.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>gb2312</param-value>
</init-param>
</filter>
...
<filter-mapping>
<filter-name>setCharacterEncoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
另外一个地方是:
<jsp-property-group>
<display-name>JSP Property Group</display-name>
<url-pattern>/*</url-pattern>
<page-encoding>gb2312</page-encoding>
</jsp-property-group>
</jsp-config>
根据错误提示,先把第一个地方屏蔽掉,错误依旧。恢复第一个后,把第二个地方屏蔽掉,问题解决。想必是sitemesh里面所应用的chains of responsibility导致,但具体细节还不清楚。
所幸第一个方法没问题,表单中文处理正常。
这篇关于sitemesh的字符编码问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!