繁体   English   中英

Freemarker 模板货币符号编码问题

[英]Freemarker template currency symbol encoding issue

使用带有 java 的 freemarker 模板会产生不正确的货币符号。 期待$但得到¤

我试过在 freemarkerConfig 上设置encodingoutputEncoding没有运气

    public String processTemplate(String freemarkerTemplate, Object model, Locale locale) throws IOException, TemplateException {
        try {
            this.freemarkerConfig.setSetting("locale", locale.getLanguage());
            this.freemarkerConfig.setSetting("time_zone", "EST");
        } catch (TemplateException e) {
            log.warn("Failed to set locale {} for freemarker template.", locale.getLanguage(), e);
        }
        //freemarkerConfig.setEncoding(locale, "UTF-8");
        //freemarkerConfig.setOutputEncoding("UTF-8");
        Template template = freemarkerConfig.getTemplate(freemarkerTemplate);
        //template.setOutputEncoding("UTF-8");
        return FreeMarkerTemplateUtils.processTemplateIntoString(template, model);
    }

还尝试将<#ftl encoding="utf-8">添加到我的模板文件中,没有任何区别。

编辑

这就是我使用货币 function: ${amountValue?string.currency}的方式

这不是编码问题。 ¤ 字符称为货币符号,如果不知道实际货币,则 Java 数字格式将其打印出来。 它不知道的原因是您将 FreeMarker locale设置设置为locale.getLanguage() (如“en”),而不是locale.toString() (如“en_US”,其中也包含一个国家/地区),并且语言不足以决定货币,是国家决定的。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM