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,还是乱码
10 个月之前 回复
zry15671554200
zry15671554200   2017.09.18 17:28

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

zry15671554200
zry15671554200 回复q932942491: 问题出在@responseBody这里,他返回的是一个JSON数据或者是XML数据,而并非是字符串。
10 个月之前 回复
q932942491
q932942491 请仔细看下controller中的代码,我只是返回了一个字符串,ajax貌似是前端技术?我这个不涉及到任何网页和数据库
10 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
学校给的小项目
手机控制硬件,是小项目,当时作为大学刚入门的一元感觉还是不会,不知道有没有大神支招。
基于tomcat的spring开发中文乱码解决方法。
基于Tomcat容器开发spring web项目,会遇到web请求中的中文乱码问题,所以,以下,基于web中的两种客户端网页请求方式:POST和GET 进行中文乱码解决。      *****************************************************************        (1)POST        要想解决POST方式提交的客
Spring Boot 打开jsp页面 乱码解决方法
通过Maven创建Spring Boot项目, 打开jsp页面的时候,没有解析jsp页面,而是直接将页面代码打印出来。 像上图这样, 解决方法是在pom.xml里面,添加: org.springframework.boot spring-boot-starter org.springframework.boot spring-bo
易语言钓鱼源码
求大神买走 求大神买走 易语言钓鱼源码
spring项目中,post请求中文乱码
spring项目中,post请求中文乱码
Spring boot项目以jar包形式启动中文乱码
解决方法,添加启动参数     java -Dfile.encoding=utf-8 -jar xxxxxxx.jar
Spring Boot 中文乱码解决方案
第一步,约定传参编码格式 不管是使用httpclient,还是okhtWebMvcConfigurerAdapter tp,都要设置传参的编码,为了统一,这里全部设置为utf-8 第二步,修改application.properties文件 增加如下配置: spring.http.encoding.force=true spring.http.encoding.charse
Spring Boot 自定义属性 以及 乱码问题
自定义属性application.properties提供自定义属性的支持,这样我们就可以把一些常量配置在这里:#自定义属性 com.waiting.custom.one=自定义属性ONE com.waiting.custom.two=自定义属性TWO com.waiting.custom.three=3然后直接在要使用的地方通过注解@Value(value="${config.name}")取出:
spring boot:run控制台输出中文乱码问题的解决
自己搭的spring boot在控制台输出中文的时候会出现乱码的情况,如下图所示: 解决方法: 在pom文件中增加配置,增加一项虚拟机参数,完整代码如下:<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <
eclips环境下开发spring boot项目,application.properties配置文件下中文乱码解决方案
如以上,application.properties文件下中文乱码。发生乱码一般都是由于编码格式不一样导致的。打开window-Preferences-content Types-Text-Java Properties File,把它的编码格式改为UTF-8,然后接着往下设置Java Properties File—Spring Properties File ,把它的编码格式也修改为UTF-8...