The problem: I would like to set the encoding to UTF-8. Still, I have Content-Type text/html;charset=ISO-8859-1
How can I do this? I followed the accepted answer in this question: How to get UTF-8 working in Java webapps?
Using:
FreeMarker
Spring 5.0.2
Ubuntu Linux 17.04
Tomcat 8.5
Java 9
In server.xml
Connector object: URIEncoding="UTF-8"
Inside HTML header: <meta charset="UTF-8" />
or <meta http-equiv='Content-Type' content='text/html; charset=UTF-8' />
Inside a class that implements WebMvcConfigurer:
@Bean
public FreeMarkerViewResolver freemarkerViewResolver()
{
FreeMarkerViewResolver resolver = new FreeMarkerViewResolver();
resolver.setCache(true);
resolver.setSuffix(".ftl");
resolver.setContentType("text/html;charset=UTF-8");
return resolver;
}
Also:
FreeMarkerConfigurer configurer = new FreeMarkerConfigurer();
configurer.setDefaultEncoding("UTF-8");
Using filter:
public class CharsetFilter implements Filter
{
private String encoding;
public void init(FilterConfig config) throws ServletException
{
encoding = config.getInitParameter("requestEncoding");
if (encoding == null)
{
encoding = "UTF-8";
}
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain next) throws IOException, ServletException
{
if (null == request.getCharacterEncoding())
{
request.setCharacterEncoding(encoding);
}
response.setContentType("text/html; charset=UTF-8");
response.setCharacterEncoding("UTF-8");
next.doFilter(request, response);
}
}
Inside web.xml:
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>