Freemarker encoding - question marks in the place of accented characters

一个人想着一个人 提交于 2019-12-01 04:51:58

FreeMarker always treats text as UNICODE, so it doesn't generate question marks. Since the accented letters aren't coming from the templates (if I understand it well), it must be your output encoding that's improper. See also: http://freemarker.org/docs/app_faq.html#faq_questionmark

BTW, getDefaultEncoding() has no role in this. That influences the decoding used when you load the templates, but you are saying that the accented characters aren't coming from the template file, also I don't think you can get ?-s from decoding (unless, for invalid UTF-8 byte sequences). As of the encoding of the output, FreeMarker just uses a Writer (as opposed to an OutputStream), so it can't influence that.

I was able to resolve a similar issue with non-standard symbols (like ™) by setting the content-type on the FreeMarkerViewResolver:

<bean id="viewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
...
    <property name="contentType" value="text/html;charset=UTF-8"/>
...
</bean>

For DROPWIZARD Users: passing through the UTF-8 Charset in the constructor worked out:

import io.dropwizard.views.View;

import java.nio.charset.Charset;

public class SomeView extends View {
    public SomeView() {
        super("/views/some.ftl", Charset.forName("UTF-8"));
    }
}

For the freemarker servlet there exist init parameters for encoding of template and output. You might compare it with your configuration.

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!