Java Freemarker模板货币符号编码问题

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

将freemarker模板与java一起使用会产生错误的货币符号。 应为
$
但应为
.

我尝试在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数字格式不知道实际货币,则打印该符号。它不知道的原因是您将FreeMarker
locale
设置设置为
locale.getLanguage()
(如“en”),而不是
locale.toString()
(如“en_-US”,其中也包含一个国家),并且语言不足以决定货币,而是由国家决定


另外,如果可以,请避免
setset
,并调用强类型方法,如
freemarkerConfig.setLocale(locale)
freemarkerConfig.setTimeZone(timeZone)
,等等。

尚未找到对此的修复方法,但我首先在JAVA中使用:
NumberFormat.getCurrencyInstance(locale).format进行格式化(amountValue)
甚至都没有意识到我把设置搞乱了。谢谢你的回答。:thumbs\u up: