SpringMVC+Freemarker UTF-8编码 完全解决方案

Posted by Elton's Blog on June 17, 2011

最近用SpringMVC+Freemarker+AJAX作了个例子.遇到了一些关于中文编码的问题.通过查资料把问题解决了. 在这里总结一下.

先解决Freemarker的中文问题. 在Spring的配置文件里要添加一些配置项.

<bean id="freemarderConfig"
          class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
        <property name="templateLoaderPath" value="/ftl/"/>
        <property name="freemarkerVariables">
            <map>
                <entry key="xml_escape" value-ref="fmXmlEscape"/>
            </map>
        </property>
        <property name="freemarkerSettings">
            <props>
                <prop key="defaultEncoding">UTF-8</prop>
            </props>
        </property>
    </bean>
    <bean id="fmXmlEscape" class="freemarker.template.utility.XmlEscape"/>
    <bean id="viewResolver"
          class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
        <property name="cache" value="true"/>
        <property name="viewClass"
                  value="org.springframework.web.servlet.view.freemarker.FreeMarkerView"/>
        <property name="suffix" value=".ftl"/>
        <property name="exposeRequestAttributes" value="true"/>
        <property name="exposeSessionAttributes" value="true"/>
        <property name="exposeSpringMacroHelpers" value="true"/>
        <property name="contentType" value="text/html;charset=UTF-8"/>
    </bean>

在Spring的配置文件中像如上配置之后Freemarker的中文问题基本解决.