get请求到javaController乱码

postman显示编码格式是utf-8的Content-Type →application/json;charset=UTF-8

图片描述

如题,我再pom.xml里配置了编码格式。但是怎么到了controller还是乱码的

阅读 2k
2 个回答

你的信息给的不够多,根据你给的信息没有办法判断你项目是使用哪种架构方式的,不管哪种方式,最终你都要解决编码格式化问题。
你可以尝试一下几种方案,如果你是偏好配置编程,那么你应该在的web.xml的过滤器顶部添加类似如下代码

<filter> 
    <!-- if you want encoding all request, this should be at the top of all your filters -->
    <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>

还有一种可能是maven编码格式导致,但我感觉可能性不大,大概需要如下配置:

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    ...
</properties>

如果你是偏于注解编程的方式,那么你可以装在一个bean,大概代码如下:

@Bean public StringHttpMessageConverter stringHttpMessageConverter() {
    return new StringHttpMessageConverter(StandardCharsets.UTF_8); //Java 7 imported, 我比较偏好这种
    //return new StringHttpMessageConverter(Charset.forName("UTF-8"); // 常规手段
}

如果你使用的是embedded tomcat,那么你或许需要装载一个bean,操作如下:

@Bean public EmbeddedServletContainerFactory servletContainer() {
    TomcatEmbeddedServletContainerFactory tomcat = new TomcatEmbeddedServletContainerFactory();
    tomcat.setUriEncoding("UTF-8");
    ...
    return tomcat;
}

如果你使用的是外部tomcat,那么我建议你在server.xml http或https模块(视你的请求协议而定)添加coding过滤,配置大概如下:

<connector port="8080" uRIEncoding="utf-8" ... />

正如你在maven中配置的一样,也是方式之一。代码可能存在拼写或记忆错乱问题,请各路大牛拍砖,指正

你可以看下你项目的编码集时什么,还有指定maven 编译时的编码,maven默认是gbk编译

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题