簡體   English   中英

Tomcat8 UTF-8顯示為問號

[英]Tomcat8 UTF-8 showing as question mark

我已經閱讀了幾天,但無法解決!

好。 我有一個Webapp,它基於GET參數制作一個字節數組,並將其發送到服務器。 然后將回復解密,並且我有將其解析為JSON的代碼。

InputStream myis = new ByteArrayInputStream(decryptedPayload);
new Avatar(myis);

decryptedPayload是一個byte []。

有些字符是外來字符,例如俄語或中文。 這些只是無法通過GET參數正確發送,或者當我收到東西並打印出來時...

例如,這是一個UTF-8字符ж。當我嘗試通過GET參數傳遞它時,我沒有得到正確的響應。 http://185.112.249.77:9999/Api/search?search=ж正如您所看到的, ж正在變為? 然后不返回任何結果,就好像該字符實際上已發送一樣,它應該返回結果。

我正在使用Tomcat8。 關於如何解決此問題的任何想法?

謝謝

更新

<%@ 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>

順便說一下,我是在與我的生產服務器具有相同配置的Localhost上完成的。 http:// localhost:8080 / Api / test.jsp?mydata =жä輸出“發布到此表單的數據為:жä”,因此它確實可以正常工作...

編輯2:

http://185.112.249.77:9999/Api/test?data=%D0%B6%C3%A4

@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"));
    }

}

更新3

在servlet中,我更改了response.getWriter().println(request.getParameter("data")); response.getWriter().println(request.getParameter("data") +"\\n"+ "¢"); 現在我有這個輸出:

жä

¢

您的請求默認為:

Content-Type: application/json;charset=ISO-8859-1

嘗試將所有char編碼設置為Tomcat中的 UTF8進行測試。

而且UTF-8逃脫了您的請求,所以:ж是%u0436

http://185.112.249.77:9999/Api/Search?search=%u0436

上面的URL返回了很多json信息,並使用此搜索參數進行了編碼。

您可以使用在線工具,像這樣一個測試。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM