def index = {
response.setContentType("text/html; charset=utf-8");//以utf8编码输出
}
另外注意的是ftl文件必须是ANSI编码,不能使用utf-8,否则会乱码。
2009-08-15更新以下内容:
上述内容只在windows环境下有效,要在linux下面同时有效,需要修改freemarker plugin源码里面的设置,修改FreemarkerGrailsPlugin.groovy如下:
if(developmentMode) {
templateLoaderPath="file:${BuildSettingsHolder.settings.baseDir.absolutePath}/grails-app/views"
configLocation = "file:${BuildSettingsHolder.settings.baseDir.absolutePath}/web-app/WEB-INF/freemarker.properties"//新增
//或者增加defaultEncoding="UTF-8"
} else {
templateLoaderPath="/WEB-INF/grails-app/views"
configLocation = "/WEB-INF/freemarker.properties"//新增
//或者增加defaultEncoding="UTF-8"
}
如果设置外部配置文件的话,增加freemarker.properties到配置路径,内容如下:
locale=zh_CN
default_encoding=UTF-8
number_format=#
date_format=yyyy-MM-dd
time_format=HH:mm:Ss
datetime_format=yyyy-MM-dd HH:mm:Ss
另外将.ftl文件存为utf-8编码格式