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
我在使用 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