欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

freemarker 中文乱码解决

程序员文章站 2022-03-18 21:49:58
...

共四处需要注意:

FreeMarkerConfigurer

<bean id="freemarkerConfig"
		class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
		<property name="templateLoaderPath" value="/WEB-INF/ftl/" />
		<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>
				<!-- 其他配置 -->
				<prop key="datetime_format">yyyy-MM-dd HH:mm:ss</prop>
				<prop key="time_format">HH:mm:ss</prop>
				<prop key="number_format">0.####</prop>
				<prop key="boolean_format">true,false</prop>
				<prop key="whitespace_stripping">true</prop>
				<prop key="tag_syntax">auto_detect</prop>
			</props>
		</property>
</bean>

FreeMarkerViewResolver

<bean id="viewResolver"
		class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
		 <!-- 设置页面中文乱码问题 -->
        <property name="contentType" value="text/html;charset=UTF-8"/>
        <!--  其他配置 -->  
        <property name="cache" value="true" />
        <property name="prefix" value="" />
        <property name="suffix" value=".ftl" />
        <property name="requestContextAttribute" value="request" />
        <property name="exposeSpringMacroHelpers" value="true" />
        <property name="exposeRequestAttributes" value="true" />
        <property name="exposeSessionAttributes" value="true" />
</bean>

ftl文件编码

 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">

如果前3步加上运行都不可以,还是乱码,那么就是我们的输出流编码问题

通常freemaker的输出流的写法是这样的

Writer writer = new FileWriter(pagedir+goodsId+".html");

这样写是没有什么问题,但是因为没有说明输出的编码格式为UTF-8,所以乱码

解决办法:

Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(new File(pagedir+goodsId+".html")),"UTF-8"));

这样再次运行,页面编码正常

相关标签: freemarker乱码