您的位置:首页 > Web前端 > JavaScript

sitemesh,html乱码问题解决不了,难道一定要用jsp

2009-03-17 11:48 316 查看
接上篇struts2+freemarker+sitemesh乱码,解决了

发现模板页编码正常了,被修饰页却乱码了

google了一下,发现jsp的可以根据<%@ page language="java" contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>来识别编码,HTML的却不行,而且没有好的解决方案,我不想把系统默认编码拿去改

只要把html改成jsp,想想在这种情况下,html跟jsp的效率估计也差不多,反正都是要经过sitemesh修饰后才能出来的

附网上不完美的解决方案:

静态html在sitemesh中乱码的解决方法。

前提条件:sitemesh的decorator的编码全部用UTF-8,使用SetCharacterEncodingFilter把request的encoding也

设置成UTF-8

问题1、decorator中的内容出现乱码。

原因:

解决方法:改进SetCharacterEncodingFilter,使它对response也设置encoding为UTF-8

问题2、被修饰的html内容出现乱码。

原因:sitemesh根据html的contenttype(例如:text/html;charset=utf-8)来决定html文件的encoding,

如果contenttype是像(text/html)这样的形式,sitemesh就无法知道html的encoding,这时sitemesh就

使用DEFAULT_ENCODING即System.getProperty("file.encoding"),在jetty中正是后面那样,估计tomcat也是这样。

解决方法:使html的encoding和System.getProperty("file.encoding")相同。

1、启动jetty时将java系统变量file.encoding设置为UTF-8,html的编码也用UTF-8.(推荐)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: