Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用RESTEasy/jax-rs的字符编码响应_Java_Jax Rs_Resteasy - Fatal编程技术网

Java 使用RESTEasy/jax-rs的字符编码响应

Java 使用RESTEasy/jax-rs的字符编码响应,java,jax-rs,resteasy,Java,Jax Rs,Resteasy,我是在服务器上使用RESTeasy for jax rs设置的。我的客户端发送一个包含字符名称的字符串✓', 服务器可以存储该字符(我可以确认它是否正确存储在服务器上)。但是,服务器似乎无法返回'✓' 在响应中,将发送一个“?” 我假设我需要指定一个返回编码或其他什么,但我不知道在哪里做这件事,也不知道如何检查以查看当前的编码是什么 如何在服务器上指定编码,以便返回'✓' 作为回应 编辑以添加代码 我的服务器代码: @Path("compiled/{rootReportGroupId}") @G

我是在服务器上使用RESTeasy for jax rs设置的。我的客户端发送一个包含字符名称的字符串✓', 服务器可以存储该字符(我可以确认它是否正确存储在服务器上)。但是,服务器似乎无法返回'✓' 在响应中,将发送一个“?”

我假设我需要指定一个返回编码或其他什么,但我不知道在哪里做这件事,也不知道如何检查以查看当前的编码是什么

如何在服务器上指定编码,以便返回'✓' 作为回应

编辑以添加代码

我的服务器代码:

@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编码,但文本不是编码,而是编码导致了问题的发生

问候 栾

如何在服务器上指定编码,以便返回'✓' 作为回应

有三个层需要配置:

  • 浏览器显示和表单提交
  • JSP

    
    
    HTML

    
    
  • Web服务器处理
  • JSP

    
    
    Servlet中的相同类型的内容。请参阅中的JBoss特定解决方案以及完整的独立于服务器的解决方案

  • 数据库设置
  • 您可能会丢失数据库级别的字符信息。检查以确保数据库编码也是UTF-8,而不是ASCII


    有关此主题的完整讨论,请参阅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");
    %>