java 乱码:%EF%BF%BD%EF%BF%BD%EF%BF%BD%D7%B3%C9%B9%EF%BF%BD

springmvc 添加utf8过滤器后,接收报文乱码。采用@requestBody方式接收的。
去掉过滤器就正常了,但是现在过滤器是整体的过滤器,还不能去掉,不知道大家有什么办法!
web.xml中的过滤器:

<filter>
<filter-name>characterEncodingFilter</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>

public static void main(String[] args) throws UnsupportedEncodingException {
String str = "交易成功";
String code_utf = "%E4%BA%A4%E6%98%93%E6%88%90%E5%8A%9F";
String code_gbk = "%BD%BB%D2%D7%B3%C9%B9%A6";
String code_error = "%EF%BF%BD%EF%BF%BD%EF%BF%BD%D7%B3%C9%B9%EF%BF%BD";
String x1 = URLDecoder.decode(code_utf, "UTF-8");
String x2 = URLDecoder.decode(code_gbk, "GBK");
System.out.println(x1);
}

code_error 是添加过滤器后形成的编码。转不回来了,大家帮看看怎么回事!

第1个回答  2018-07-20
filter-mapping里的表达式是怎么写的?追问


characterEncodingFilter
/*

追答

呃呃呃,不清楚你的前后逻辑,实在不好定位,传入的数据是utf8的嘛?

追问

传过来的是应该是gbk的

追答

那这个就有问题了,最好传过去的原始数据是utf8的

本回答被网友采纳
第2个回答  2018-07-21
浏览器 传过来的,确切是哪个语言编码的。。。。。先找到根源。
~~~~~~~~~~~~~~~~~
第3个回答  2018-07-20
?……