freemarker 中文乱码问题解决办法

本文介绍了解决Freemarker处理中文模板时出现乱码的方法。一是修改freemarker.properties配置文件设置默认编码;二是通过Spring配置FreeMarkerConfigurer指定编码。确保编辑器和页面编码一致。

freemarker的Configurartion中有默认的编码为ISO-8859-1所以读取有中文的模板时就会变乱码。

解决办法一:通过修改配置文件freemarker.properties,修改默认编码:

locale=zh_CN
default_encoding=gbk
number_format=#
date_format=yyyy-MM-dd
time_format=HH:mm:Ss
datetime_format=yyyy-MM-dd HH:mm:Ss

解决办法二:通过spring或其他第三方工具配置:

<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">gbk</prop> </props> </property> </bean>

注:org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer在spring-webmvc.jar 包里面,项目要导入这个jar包才可以,或者会找不到类。

另外,页面编码和charset要跟上面配置的一致才可以,<meta http-equiv="Content-type" content="text/html; charset=gbk">

注意:还有一种常见的导致乱码问题:编辑器或文件保存的编码和页面设置的编码不一致会导致乱码,例如文件的编码(用记事本打开,另存为可以看到文件的编码)为UTF-8而页面的charset=gbk就会出现乱码,反之也一样


类org.ofbiz.webapp.ftl.FreeMarkerViewHandler
的public void render(

有 template = config.getTemplate(page, UtilHttp.getLocale(request));

然后找org.ofbiz.base.util.UtilHttp的
getLocale方法,5个,调来调去昏。。。。

猜吧,把 -Dfile.encoding=UTF-8 加入启动的shell,可以在ftl中使用utf-8编码了

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值