FreeMarker在生成静态页面的时候如果编码不一致则会产生乱码,特别是在处理中文的时候,如果不指定相同的编码,那么一定会产生中文乱码,所以在开发当中应该尽量保证编码一致,以下几个方面可以避免乱码:
1. ftl文件编码设置
Window->Preferences->Workspace->Text file encoding
1
配置 Text file encoding为 utf-8,再把相应ftl中文再改一次。
2. FreeMarkerConfigurer配置
<bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
<property name="templateLoaderPath" value="/WEB-INF/views"/>
<property name="freemarkerSettings">
<props>
<!-- 设置页面中文乱码问题 -->
<prop key="default_encoding">UTF-8</prop>
<!--模板的编码格式 -->
<prop key="locale">UTF-8</prop>
<!-- 本地化设置 -->
<prop key="url_escaping_charset">UTF-8</prop>
<!-- 其他配置 -->
......
</props>
</property>
<property name="templateLoaderPath">
<value>WEB-INF/FTL/</value>
</property>
</bean>
3. FreeMarkerViewResolver配置
<bean id="freemarkerResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
<!-- 设置页面中文乱码问题 -->
<property name="contentType" value="text/html;charset=UTF-8"/>
<!-- 其他配置 -->
......
</bean>
4. ftl文件编码设置
<html>
<head>
<!-- flt模板里面已经要加入这行,不然一定会产生中文乱码。-->
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
hello你好${name}
</body>
</html>