【发布时间】:2021-07-28 17:36:30
【问题描述】:
我做了一个简单的表格,用户输入一个名字,然后这个名字被存储在数据库中。我正在使用Spring MVC 和Thymeleaf。我的数据库是MySQL。当我尝试输入非拉丁字符时出现问题。
在数据库中存储非拉丁语name 后,我尝试在网页上显示它,但我得到的不是西里尔字符,而是这样的奇怪字符:
Ð〜ѼÑ
- 我确信数据库中的编码是正确的,因为当我尝试
使用
MySQL Workbench存储一个非拉丁名称,编码是 对。 - Thymeleaf 编码也设置为 UTF-8。当我放时,非翻译字符正确显示 例如,在这样的标签中:
<h1> Заголовок </h1>
我已经试过了:
- 在 html 文件中添加这一行:
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> - 在
form标签中添加此属性:<form accept-charset="UTF-8" ...
但是没有任何效果。我做错了什么?
【问题讨论】:
-
您是否尝试在 url 数据源中指定字符集? spring.datasource.url = jdbc:mysql://localhost:3306/YOUR_DB_NAME?useUnicode=yes&characterEncoding=UTF-8
-
我试过了,但没有任何改变
-
我之前试过了。添加此配置后,GET 请求开始使用非拉丁字符正常工作。不幸的是,它不适用于 POST
-
在数据库中的所有表和文本列上指定
utf8mb4字符集。更多UTF-8 all the way through。您正面临一个简单的mojibake 案例,例如 Python'Имя'.encode('utf-8').decode('cp1252','ignore')(返回'ИмÑ')。
标签: java spring forms encoding thymeleaf