2 q932942491 q932942491 于 2017.09.18 11:34 提问

Spring项目中文乱码,求大神支招

如题,我设置了request和response字符集,设置了过滤器,设置了Tomcat的字符集,也检查了IDEA的默认编码。可该乱码的还是乱码绝不含糊,求指教。

TestController.java

@Controller
public class TestController {

    @RequestMapping(value = "/encode1", method = RequestMethod.GET)
    @ResponseBody
    public String encode1() throws Exception{
        return "中文";
    }

    @RequestMapping(value = "/encode2", method = RequestMethod.GET)
    @ResponseBody
    public String encode2(HttpServletRequest request,HttpServletResponse response, Object handler) throws Exception{
        response.setContentType("text/html; charset=UTF-8");
        request.setCharacterEncoding("UTF-8");
        response.setCharacterEncoding("UTF-8");
        return new String("中文".getBytes("ISO-8859-1"), "UTF-8") + "中文" + request.getCharacterEncoding() + response.getContentType();
    }
}

web.xml

<filter>
    <filter-name>encodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
      <param-name>encoding</param-name>
      <param-value>UTF-8</param-value>
    </init-param>
    <init-param>
      <param-name>forceEncoding</param-name>
      <param-value>true</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>encodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

Tomcat中的web.xml

    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443"
               URIEncoding="UTF-8"
               useBodyEncodingForURI="true" />

环境变量

IDEA字符集

结果

图片说明

2个回答

hello_realWorld
hello_realWorld   2017.09.18 14:48

留着web.xml的filter 去掉项目中的其他转码,直接return 中文试试

q932942491
q932942491 请看一下TestController 中的encode1()方法,这应该就是你说的直接return,还是乱码
2 个月之前 回复
zry15671554200
zry15671554200   2017.09.18 17:28

你这个是用ajax传的值把?你的ajax也要设置字符集啊。你看看你设置了没

zry15671554200
zry15671554200 回复q932942491: 问题出在@responseBody这里,他返回的是一个JSON数据或者是XML数据,而并非是字符串。
大约 2 个月之前 回复
q932942491
q932942491 请仔细看下controller中的代码,我只是返回了一个字符串,ajax貌似是前端技术?我这个不涉及到任何网页和数据库
2 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片