【问题标题】:Bad encoding with Tomcat 8Tomcat 8 编码错误
【发布时间】:2016-12-29 23:02:04
【问题描述】:

我有一个从 MySQL 获取数据的 Tomcat 8。 MySQL 中的行编码良好(如俄语中的文本)。如果我调试服务器,则所选行的编码良好。但是,返回的 JSON 字符不正确。 我检查了我的server.xml,我有:

<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" URIEncoding="UTF-8" redirectPort="8443" />

请注意,我在其中有 URIEncoding="UTF-8"

我还能做什么?

【问题讨论】:

  • 您是否为编码配置了任何 servlet 过滤器?考虑使用org.springframework.web.filter.CharacterEncodingFilter
  • 添加过滤器有帮助!谢谢!

标签: java mysql encoding utf-8 tomcat8


【解决方案1】:

据我所知,URI 编码仅适用于 URI;它不会影响您发回的任何内容的编码。您应该设置正确的响应标头,例如“Content-type: application/json; charset=utf-8”。

这是我正在开发的 Spring Boot 应用程序的 sn-p,它是针对请求的,但它可能会让您了解您需要什么:

private RestTemplate rest = new TestRestTemplate() {{ getMessageConverters().add(0, new StringHttpMessageConverter(Charset.forName("UTF-8"))); }};
private HttpHeaders requestHeaders = new HttpHeaders() {{ setContentType(MediaType.APPLICATION_JSON); }};

如果你能展示你的代码,也许我们可以更好地帮助你。

【讨论】:

  • 我不明白,如何使用getMessageConverters?仅使用 requestHeaders 无济于事。如何设置正确的响应标头?而且我的代码非常简单。直到返回声明一切都很好。
猜你喜欢
  • 2014-12-28
  • 1970-01-01
  • 1970-01-01
  • 2011-09-04
  • 1970-01-01
  • 2014-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多