【发布时间】:2016-04-29 03:45:08
【问题描述】:
我想在我的 MySQL 数据库中添加波兰语字符,如“ą、ę、ć、ł”等。我已经完成的步骤:
- 在我的 MySQL 数据库中将“方法比较铭文”设置为
utf8_unicode_ci。 - 设置所有
varchar字段Method comparing inscription到utf8_unicode_ci - 在
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
- 为确保在所有 HTML 文件中添加
<head></head>括号<meta http-equiv="Content-type" content="text/html; charset=utf-8"/> - 这样设置配置文件:
@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