环境配置
IDEA 编码:UTF-8
Tomcat:10.0.12
Thymeleaf:3.0.12
问题描述
静态html页面直接打开,中文显示正常。
启动Tomcat,servlet里通过TemplateEngine.process()访问html,出现中文乱码。
解决方法
1.定义Thymeleaf模板的资源解析器后,要设定其字符集
public class ThymeleafUtil {
private static final TemplateEngine engine;
static {
engine = new TemplateEngine();
ClassLoaderTemplateResolver r = new ClassLoaderTemplateResolver();
// 设置字符集
r.setCharacterEncoding("UTF-8");
engine.setTemplateResolver(r);
}
public static void process(String template, IContext context, Writer writer){
engine.process(template, context, writer);
}
}
2.在Servlet中设置request对象的字符集
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setCharacterEncoding("utf-8");
ThymeleafUtil.process("login.html", new Context(), response.getWriter());
}