Spring mvc编码和“???”符号代替html中的utf-8符号

yk9xbfzb  于 2022-11-15  发布在  Spring
关注(0)|答案(2)|浏览(141)

我正在做一个小的Spring Mvc项目,用的是Intelj的想法。大部分时间我用的是英语,所以一切都很好。但是当我在我的网站上尝试使用utf-8(ru)字符时,我只得到了????符号而不是文本。
我在IDE中的html页面编码为utf-8。项目编码也设置为utf-8。如果我使用logging或System.out.println,IDE将在控制台中打印utf-8符号。但当我在模型中发送它们或在utf-8中仅使用html的纯文本时,一切都变得???
Html编码也设置为
我试着设置过滤器,它将所有的请求和响应编码为utf-8。仍然是相同的????符号。
我的html:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:th="http://www.thymeleaf.org"
      xmlns:sec="http://www.thymeleaf.org/extras/spring-security">
<head>
    <meta charset="UTF-8"/>
    <div th:replace="fragments/header :: header-css"></div>
</head>
<body>
<div th:replace="fragments/header :: header"/>
<div class="container">
    <header>
        <h1 align="center" th:text="${text}">
            ру текст (utf-8 ru text)
        </h1>
    </header>
</div>
</body>
</html>

我的控制器:

@GetMapping
    public ModelAndView showCheckList() {
        String text = "тестовый текст";
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.addObject("text",text);
        modelAndView.setViewName("shop/CheckList");    
        return modelAndView;    
    }
dz6r00yl

dz6r00yl1#

通过查看您的代码,我可以说您正在使用thymeleaf作为视图技术。
参见this螺纹。
应为templateResolverThymeleafViewResolver显式设置属性characterEncoding

<bean id="templateResolver" class="org.thymeleaf.templateresolver.ServletContextTemplateResolver">
    ...
    <property name="characterEncoding" value="UTF-8"/>
    ...
</bean>

<bean class="org.thymeleaf.spring4.view.ThymeleafViewResolver">
    ...
    <property name="characterEncoding" value="UTF-8"/>
    ...
</bean>

或使用注解。

@Bean
    public ThymeleafViewResolver thymeleafViewResolver() {
        ThymeleafViewResolver resolver = new ThymeleafViewResolver();
        resolver.setTemplateEngine(templateEngine());
        resolver.setCharacterEncoding("UTF-8");
        return resolver;
    }
plicqrtu

plicqrtu2#

在数据库表中进行一些更改,更改字符集utf8和utf8_general_ci,如以下屏幕截图所示。

相关问题