Java Freemarker模板货币符号编码问题
将freemarker模板与java一起使用会产生错误的货币符号。 应为Java Freemarker模板货币符号编码问题,java,encoding,character-encoding,freemarker,Java,Encoding,Character Encoding,Freemarker,将freemarker模板与java一起使用会产生错误的货币符号。 应为$但应为. 我尝试在freemarkerConfig上设置编码和输出编码,但没有成功 publicstringprocesstemplate(stringfreemarkertemplate、对象模型、区域设置)抛出IOException、TemplateException{ 试一试{ this.freemarkerConfig.setSetting(“locale”,locale.getLanguage()); 此.fre
$
但应为.
我尝试在freemarkerConfig上设置编码
和输出编码
,但没有成功
publicstringprocesstemplate(stringfreemarkertemplate、对象模型、区域设置)抛出IOException、TemplateException{
试一试{
this.freemarkerConfig.setSetting(“locale”,locale.getLanguage());
此.freemarkerConfig.setSetting(“时区”、“EST”);
}捕获(模板异常e){
log.warn(“为freemarker模板设置区域设置{}失败。”,locale.getLanguage(),e);
}
//freemarkerConfig.setEncoding(区域设置,“UTF-8”);
//freemarkerConfig.setOutputEncoding(“UTF-8”);
模板模板=freemarkerConfig.getTemplate(freemarkerTemplate);
//模板。设置输出编码(“UTF-8”);
返回FreeMarkerTemplateUtils.ProcessTemplateToString(模板,模型);
}
还尝试将
添加到我的模板文件中,没有任何区别
编辑
这是我如何使用currency函数的:
${amountValue?string.currency}
这不是编码问题。·字符称为货币符号,如果Java数字格式不知道实际货币,则打印该符号。它不知道的原因是您将FreeMarkerlocale
设置设置为locale.getLanguage()
(如“en”),而不是locale.toString()
(如“en_-US”,其中也包含一个国家),并且语言不足以决定货币,而是由国家决定
另外,如果可以,请避免
setset
,并调用强类型方法,如freemarkerConfig.setLocale(locale)
,freemarkerConfig.setTimeZone(timeZone)
,等等。尚未找到对此的修复方法,但我首先在JAVA中使用:NumberFormat.getCurrencyInstance(locale).format进行格式化(amountValue)
甚至都没有意识到我把设置搞乱了。谢谢你的回答。:thumbs\u up: