Java 格式丢失的波兰字符
在我的MySQL数据库中添加波兰语字符如“ą、ę、ć、ł”时,我简直是疯了。我已采取的步骤: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
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
@配置
公共类配置扩展了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, "/*");
}
}