Java Tomcat8 UTF-8显示为问号
我已经读了好几天了,但无法解决这个问题强> 嗯。我有一个webapp,它根据GET参数生成bytearray并将其发送到服务器。然后对回复进行解密,我有代码将其解析为JSONJava 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参数正确发送,或者当我接收资料并打印出来时 例如,这里有一
InputStream myis = new ByteArrayInputStream(decryptedPayload);
new Avatar(myis);
decryptedPayload
是一个字节[]
有些字符是外来字符,例如俄语或汉语。这些只是没有通过get参数正确发送,或者当我接收资料并打印出来时
例如,这里有一个UTF-8字符ж
当我尝试通过GET参数传递它时,我没有得到正确的响应。
如您所见,ж
正在更改为?
,然后不返回任何结果,如果该字符实际发送,则应返回结果
我正在使用Tomcat8。有没有办法解决这个问题
谢谢
更新
更新3
Ok在servlet中,我更改了response.getWriter().println(request.getParameter(“数据”)
toresponse.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"));
}
}