在引用Thymeleaf template fragment时,fragment部分的HTML内容出现了乱码问题。

问题重现

Template fragment定义文件test.html

<div th:fragment="copy">
    <p>测试文字</p>
</div>

引用部分代码

<body>
    <div th:include="test :: copy"></div>
</body>

代码include中的test和test.html名称对应,copy与th:fragment中的名称对应。

此时,fragment部分的中文会出现乱码问题。

解决方案

根据官方文档中的例子,修改Template fragment定义文件test.html,增加完整的HTML标签定义

<!DOCTYPE html SYSTEM "http://www.thymeleaf.org/dtd/xhtml1-strict-thymeleaf-4.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:th="http://www.thymeleaf.org">
    <body>
      <div th:fragment="copy">
        <p>测试文字</p>
        </div>
    </body>
</html>

乱码问题解决,看来不能省事,去掉了多余的部分。


p.s. 尝试了代码,配置文件中各种utf-8编码的设置,均无效。可能是我姿势不对。没读源码之前还是老老实实的吧!