Tomcat 8 编码错误
Posted
技术标签:
【中文标题】Tomcat 8 编码错误【英文标题】:Bad encoding with Tomcat 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
检查这个:***.com/questions/13504732/…
添加过滤器有帮助!谢谢!
【参考方案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 无济于事。如何设置正确的响应标头?而且我的代码非常简单。直到返回声明一切都很好。以上是关于Tomcat 8 编码错误的主要内容,如果未能解决你的问题,请参考以下文章