Java 使用RESTEasy/jax-rs的字符编码响应
我是在服务器上使用RESTeasy for jax rs设置的。我的客户端发送一个包含字符名称的字符串✓', 服务器可以存储该字符(我可以确认它是否正确存储在服务器上)。但是,服务器似乎无法返回'✓' 在响应中,将发送一个“?” 我假设我需要指定一个返回编码或其他什么,但我不知道在哪里做这件事,也不知道如何检查以查看当前的编码是什么 如何在服务器上指定编码,以便返回'✓' 作为回应 编辑以添加代码 我的服务器代码:Java 使用RESTEasy/jax-rs的字符编码响应,java,jax-rs,resteasy,Java,Jax Rs,Resteasy,我是在服务器上使用RESTeasy for jax rs设置的。我的客户端发送一个包含字符名称的字符串✓', 服务器可以存储该字符(我可以确认它是否正确存储在服务器上)。但是,服务器似乎无法返回'✓' 在响应中,将发送一个“?” 我假设我需要指定一个返回编码或其他什么,但我不知道在哪里做这件事,也不知道如何检查以查看当前的编码是什么 如何在服务器上指定编码,以便返回'✓' 作为回应 编辑以添加代码 我的服务器代码: @Path("compiled/{rootReportGroupId}") @G
@Path("compiled/{rootReportGroupId}")
@GET
@Produces("text/html; charset=UTF-8")
@NoCache
public String getCompiledReports(@PathParam("rootReportGroupId") Long rootReportGroupId){
return "✓";
}
示例请求:
GET http://192.168.0.12:8888/rest/reports/compiled/190
Host 192.168.0.12:8888
User-Agent Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:7.0.1) Gecko/20100101 Firefox/7.0.1
Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language en-us,en;q=0.5
Accept-Encoding gzip, deflate
Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7
Connection keep-alive
Content-Type application/json
响应标题:
Cache-Control public, no-transform, no-cache
Content-Type text/html;charset="UTF-8"
Content-Length 1
Server Jetty(6.1.x)
答复机构:
?
有点漫无边际和冗长,所以我把它写进了一个答案,但它主要是一个评论 出于好奇,您使用的是什么版本的Java、Rest Easy和编译器设置 我使用了您在MacOS 10.6、RestEasy 2.2.3.GA、Java 1.6.029、Tomcat 7.0.22上发布的代码,它工作正常(我删除了param部分,但似乎不相关) 服务器端用于读写的代码是什么?阅读时是否存在编码问题 我还怀疑您的回复标题,尤其是:
Content-Type text/html;charset="UTF-8"
我认为应该是:
Content-Type text/html;charset=UTF-8
我认为问题在于您的IDE/文本编辑器正在以另一种编码保存文件,因此您让容器返回UTF-8编码,但文本不是编码,而是编码导致了问题的发生 问候 栾 如何在服务器上指定编码,以便返回'✓' 作为回应 有三个层需要配置:
HTML
Servlet中的相同类型的内容。请参阅中的JBoss特定解决方案以及完整的独立于服务器的解决方案
有关此主题的完整讨论,请参阅Java文章。它支持HTML实体吗?试试
✓代码>。是的,发送这些字符都没有问题。不过,我想将字符串原封不动地发送出去。这个问题在这里得到了回答@DavidChaava,特定于jboss的jboss web配置将如何帮助jetty?Ya.的用户。。标头中OP的字符集声明看起来确实可疑。一些参考资料:和
<%@page pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<%
request.setCharacterEncoding("UTF-8");
String name = request.getParameter("NAME");
%>