簡體   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