今天在用
SpringMVC
结合
FreeMarker
写一个程序,在编码的时候我所有的页面
contentType
都设置成
UTF-8
了,并且项目的整体编码也是
UTF-8
,但是
freemarker
模板显示的时候还是出现了中文乱码,
google
了一圈,都是给
FreeMarkerView
的
contentType
属性设置为
text/html;charset=UTF-8
就解决了问题,其实不然,这样做并没有解决问题,没招!下了
Freemarker
源码看看吧,发现
freemarker
的
Configurartion
中有默认的编码为
ISO-8859-1
,感觉这个应该是问题所在,看看
Spring
中
freemarker
视图解析器发现有个
freemarkerSettings
属性来设置
freemarker
中的
Configuration
相关数据,于是做如下配置:
<bean id="freemakerCongfig"
class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
<property name="templateLoaderPath">
<value>/WEB-INF/web/</value>
</property>
<property name="freemarkerSettings">
<props>
<prop key="defaultEncoding">UTF-8</prop>
</props>
</property>
</bean>
接着同样配置一下视图解析器的
contentType
属性为
text/html;charset=UTF-8
,启动
tomcat
,运行,乱码消失,晕,
google
出来的东西差不多都是同一篇,根本就没有讲到关键点!自己动手,丰衣足食!