tomcat 返回json亂碼問題解決記錄
阿新 • • 發佈:2020-12-29
在學習springmvc 時候,通過註解@ResponseBody註解直接返回一個字串時,中文全變成???了,網上各種查改這又改那。
我自己寫了個過濾器,通過設定contentType等都沒有效果
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
System. out.println("========================================");
servletRequest.setCharacterEncoding("UTF-8");
servletResponse.setCharacterEncoding("UTF-8");
servletResponse.setContentType("application/json;charset=utf-8");
filterChain.doFilter (servletRequest,servletResponse);
}
搞了好久才發現,設定根本沒有生效(在Controller上設定也沒有效果)
最後是通過加produces這個屬性修改成功
@RequestMapping(value = "/test/submit",produces = "application/json;charset=utf-8")
或者改為無返回值型別void
@ResponseBody
@RequestMapping(value = "/test/submit")
public void testSubmit(@RequestParam("name") String name, HttpServletResponse response) throws IOException {
response.setContentType("application/json;charset=utf-8");
PrintWriter writer = response.getWriter();
writer.print("中文不亂了");
}
具體深究我找到一個分析該問題的博主的文章可以傳送過去連結