Java 格式丢失的波兰字符

Java 格式丢失的波兰字符,java,mysql,spring,character-encoding,thymeleaf,Java,Mysql,Spring,Character Encoding,Thymeleaf,在我的MySQL数据库中添加波兰语字符如“ą、ę、ć、ł”时,我简直是疯了。我已采取的步骤: 在my MySQL数据库中将“Method comparing Menting”设置为utf8\u unicode\u ci 为所有varchar字段设置方法比较铭文与utf8\u unicode\u ci 在application.propertiesset中: spring.datasource.url:jdbc:mysql://localhost:3306/database?characterEn

在我的MySQL数据库中添加波兰语字符如“ą、ę、ć、ł”时,我简直是疯了。我已采取的步骤:

  • 在my MySQL数据库中将“Method comparing Menting”设置为
    utf8\u unicode\u ci
  • 为所有
    varchar
    字段设置
    方法比较铭文
    utf8\u unicode\u ci
  • application.properties
    set中:
  • spring.datasource.url:jdbc:mysql://localhost:3306/database?characterEncoding=UTF-8
    强制文件编码=UTF-8
    spring.http.encoding.charset=UTF-8
    spring.http.encoding.enabled=true
    spring.http.encoding.force=true
    spring.thymeleaf.mode=HTML5
    spring.thymeleaf.encoding=UTF-8
    spring.thymeleaf.content type=text/html
    spring.datasource.sqlScriptEncoding=UTF-8
    
  • 请确保在所有HTML文件中添加括号
  • 按如下方式设置配置文件:
  • @配置
    公共类配置扩展了WebSecurity配置适配器{
    @凌驾
    受保护的无效配置(HttpSecurity http)引发异常{
    CharacterEncodingFilter=新的CharacterEncodingFilter();
    设置编码(“UTF-8”);
    filter.setForceEncoding(true);
    }
    }
    
    当我尝试在我的控制器中添加一些波兰语单词时,例如
    player.setName(“ĆŁĘ”)
    -没问题。数据库中的名称已正确插入

    但是,当我从Thymeleaf获取控制器中玩家的
    名称时,它返回
    而不是
    CŁĘ
    。我的表单助理Thymeleaf如下所示:

    
    姓名:
    

    我不知道我还需要做什么才能从Thymeleaf中获得正确的字符。

    我找到了解决方案。这需要我采取一些步骤:

  • 将注释
    @EnableWebSecurity
    添加到我的
    Config
    类中
  • filter.setForceEncoding(true)
  • 创建类
    ApplicationSecurityInitializer
  • 深呼吸,保持冷静:)

  • 欢迎来到Stackoverflow,你的问题看起来并不像你想象的那么糟糕。如果下议院的选民能解释为什么他在得到+2后给了这个问题a-1。
    public class ApplicationSecurityInitializer extends AbstractSecurityWebApplicationInitializer {
    
        @Override
        protected void beforeSpringSecurityFilterChain(ServletContext servletContext) {
            super.beforeSpringSecurityFilterChain(servletContext);
            FilterRegistration.Dynamic characterEncodingFilter;
            characterEncodingFilter = servletContext.addFilter("encodingFilter",
                    new CharacterEncodingFilter());
            characterEncodingFilter.setInitParameter("encoding", "UTF-8");
            characterEncodingFilter.setInitParameter("forceEncoding", "true");
            characterEncodingFilter.addMappingForUrlPatterns(null, false, "/*");
        }
    }