get请求到javaController乱码
postman显示编码格式是utf-8的Content-Type →application/json;charset=UTF-8
如题,我再pom.xml里配置了编码格式。但是怎么到了controller还是乱码的
回答:
你的信息给的不够多,根据你给的信息没有办法判断你项目是使用哪种架构方式的,不管哪种方式,最终你都要解决编码格式化问题。
你可以尝试一下几种方案,如果你是偏好配置编程,那么你应该在的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编译
以上是 get请求到javaController乱码 的全部内容, 来源链接: utcz.com/p/176535.html