Spring UTF-8 将字符“ě”、“č”、“ř”替换为“?”

Spring UTF-8 replace chars "ě", "č", "ř" to "?"

我在使用 UTF-8 编码时遇到问题。

我有一个 Spring- 引导 REST 服务器。当我执行 PUT 请求以保存文章并且内容中有特殊字符(如“ě”、“č”或“ř”)时,它们将被替换为“?”人物。但是,如果我使用 phpmyadmin 编辑文章并执行 GET 请求,它 returns "ě"、"č" 和 "ř" 正确。

package cz.flay.fellcms.http;

import cz.flay.fellcms.dao.ArticlesRepository;
import cz.flay.fellcms.entities.Article;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.*;

@CrossOrigin
@RestController
@RequestMapping(path = "/api/articles", produces = "application/json;charset=UTF-8")
public class ArticleRestController {

    @Autowired
    private ArticlesRepository articlesRepository;

    @CrossOrigin
    @GetMapping(path = "/all")
    public @ResponseBody Iterable<Article> getAll(){
        return articlesRepository.getAll();
    }

    @CrossOrigin
    @GetMapping(path = "/newest")
    public @ResponseBody Iterable<Article> getNewest(){
        return  articlesRepository.getNewest();
    }

    @CrossOrigin
    @PutMapping(path = "/save")
    public @ResponseBody HttpStatus saveArticle(@RequestBody Article article) {
        articlesRepository.save(article);
        return HttpStatus.OK;
    }

    @CrossOrigin
    @GetMapping(path = "/get")
    public @ResponseBody Article getArticle(@RequestParam int id) {
        return articlesRepository.findOne(id);
    }

}

我试图将一篇文章记录到控制台。然后正确显示特殊字符。 我尝试了很多在其他讨论中发现的东西,但没有任何帮助。

感谢您的帮助!

在您的属性文件中试试这个;

spring.datasource.url = jdbc:mysql://localhost:3306/db_name?useUnicode=yes&characterEncoding=UTF-8

我的工作方式是在 mysql 配置文件中输入以下内容 (my.cnf)

[mysql]
default-character-set=utf8
[mysqld]
character-set-server=utf8

mysql配置文件一般在linux中的/etc/mysql/my.cnf(我在Ubuntu14.04试过)。如果那里不存在,您可以使用 sudo touch /etc/mysql/my.cnf 创建该文件;然后编辑文件。

编辑: 对于 Win 用户:文件位于 /mysql/bin/my.ini