Java Tomcat8 UTF-8显示为问号

Java Tomcat8 UTF-8显示为问号,java,tomcat,utf-8,tomcat8,Java,Tomcat,Utf 8,Tomcat8,我已经读了好几天了,但无法解决这个问题 嗯。我有一个webapp,它根据GET参数生成bytearray并将其发送到服务器。然后对回复进行解密,我有代码将其解析为JSON InputStream myis = new ByteArrayInputStream(decryptedPayload); new Avatar(myis); decryptedPayload是一个字节[] 有些字符是外来字符,例如俄语或汉语。这些只是没有通过get参数正确发送,或者当我接收资料并打印出来时 例如,这里有一

我已经读了好几天了,但无法解决这个问题

嗯。我有一个webapp,它根据GET参数生成bytearray并将其发送到服务器。然后对回复进行解密,我有代码将其解析为JSON

InputStream myis = new ByteArrayInputStream(decryptedPayload);
new Avatar(myis);
decryptedPayload
是一个字节[]

有些字符是外来字符,例如俄语或汉语。这些只是没有通过get参数正确发送,或者当我接收资料并打印出来时

例如,这里有一个UTF-8字符ж 当我尝试通过GET参数传递它时,我没有得到正确的响应。 如您所见,
ж
正在更改为
,然后不返回任何结果,如果该字符实际发送,则应返回结果

我正在使用Tomcat8。有没有办法解决这个问题

谢谢

更新

更新3

Ok在servlet中,我更改了
response.getWriter().println(request.getParameter(“数据”)
to
response.getWriter().println(request.getParameter(“数据”)+“\n”+”)现在我有了这个输出:

ÐúÃ


您的请求默认为:

内容类型:application/json;字符集=ISO-8859-1

尝试在中将所有字符编码设置为UTF8以测试此功能

而UTF-8则逃避您的请求,因此:ж是%u0436

上面的URL使用此搜索参数编码返回大量json信息


您可以使用类似于测试的在线工具。

我们看不到您使用的任何源代码,因此很难判断出问题所在。我建议您编写一个简短的servlet,它只响应原始查询,还包括一个硬编码的非ASCII字符。这将有助于您确定问题是在理解查询还是在响应中返回数据。有人有什么想法吗?我给了您一个想法:向我们展示一些代码,这样我们就能更好地帮助您…@JonSkeet see my edit;)啊,我们甚至不知道这是一个JSP。从哪里可以配置JSP的内容类型(包括编码)?基本上,在进入JSP部分之前,您希望在响应上设置编码……我已经看过了,但它似乎没有正常工作:(我将再次查看thoughNow搜索
http://185.112.249.77:9999/Api/Search?search=ä
给出了一个黑色钻石,上面有一个问号……但有些看起来确实是working@ShivamPaw请参阅编辑:如果无法设置字符集,则可以对GET请求参数进行编码
<%@ page contentType="text/html; charset=UTF-8" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
   <head>
     <title>Character encoding test page</title>
   </head>
   <body>
     <p>Data posted to this form was:
     <%
       request.setCharacterEncoding("UTF-8");
       out.print(request.getParameter("mydata"));
     %>

     </p>
     <form method="POST" action="test.jsp">
       <input type="text" name="mydata">
       <input type="submit" value="Submit" />
       <input type="reset" value="Reset" />
     </form>
   </body>
</html>
@WebServlet("/test")
public class test extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public test() {
        super();
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setCharacterEncoding("UTF-8");
        request.setCharacterEncoding("UTF-8");

        response.getWriter().println(request.getParameter("data"));
    }

}