【问题标题】:Form lost Polish characters形成丢失的波兰语字符
【发布时间】:2016-04-29 03:45:08
【问题描述】:

我想在我的 MySQL 数据库中添加波兰语字符,如“ą、ę、ć、ł”等。我已经完成的步骤:

  1. 在我的 MySQL 数据库中将“方法比较铭文”设置为 utf8_unicode_ci
  2. 设置所有varchar 字段Method comparing inscriptionutf8_unicode_ci
  3. application.properties 设置:
spring.datasource.url: jdbc:mysql://localhost:3306/database?characterEncoding=UTF-8
spring.mandatory-file-encoding=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
  1. 为确保在所有 HTML 文件中添加 <head></head> 括号 <meta http-equiv="Content-type" content="text/html; charset=utf-8"/>
  2. 这样设置配置文件:
@Configuration
public class Config extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        CharacterEncodingFilter filter = new CharacterEncodingFilter();
        filter.setEncoding("UTF-8");
        filter.setForceEncoding(true);
    }
}

当我尝试在控制器中添加一些波兰语单词时,例如player.setName("ĆŁĘ")- 没关系。数据库中的名称已正确插入。

但是当我从 Thymeleaf 获取控制器中玩家的 name 时,它返回 ÄÅÄ 而不是 CŁĘ。我的表单服务员 Thymeleaf 看起来像这样:

<form action="#" th:action="@{/editPlayer}" th:object="${player}" method="post">
    <div class="info">Name:</div>
    <div class="error" th:if="${#fields.hasErrors('name')}" th:errors="*{name}"/>
    <input type="text" th:field="*{name}" placeholder="Name" th:class="${#fields.hasErrors('name')}? 'error'"/><br/>

    <input type="button" id="cancel" class="button2 button-cancel" value="CANCEL"/>
    <input type="submit" class="button button-submit" value="SUBMIT"/>
</form>

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

【问题讨论】:

  • 欢迎来到 Stackoverflow,您的问题看起来并没有您想象的那么糟糕。如果投反对票的人可以解释为什么他在获得 +2 后给这个问题打了 -1。

标签: java mysql spring character-encoding thymeleaf


【解决方案1】:

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

  1. 在我的Config类中添加注解@EnableWebSecurity
  2. filter.setForceEncoding(true)下写http.addFilterBefore(filter, CsrfFilter.class)
  3. 创建类ApplicationSecurityInitializer
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, "/*");
    }
}
  1. 深呼吸,保持冷静 :)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多