springMVC框架下编码与解码(中文乱码)

编写项目中突然用到了中文,然后发生了一大堆的乱码,于是在百度上奋斗良久,终于解决了问题。

项目在java8环境下搭建,使用spring4.3.6

1)前端页面部分




    
    登录--统一后台管理系统
    
    
    


    

标签设置页面的编码方式,html5之后可以省略写成,是的简略缩写。

2)服务器端

网上经常看到的是

    
		characterEncodingFilter
		org.springframework.web.filter.CharacterEncodingFilter
		
			encoding
			UTF-8
		
		
			forceEncoding
			true
		
	
	
		characterEncodingFilter
		/*
	

然而使用之后发现并没有生效,查看org.springframework.web.filter.CharacterEncodingFilter包后发现了大问题。

public class CharacterEncodingFilter extends OncePerRequestFilter {

	private String encoding;

	private boolean forceRequestEncoding = false;

	private boolean forceResponseEncoding = false;


	/**
	 * Create a default {@code CharacterEncodingFilter},
	 * with the encoding to be set via {@link #setEncoding}.
	 * @see #setEncoding
	 */
	public CharacterEncodingFilter() {
	}

	/**
	 * Create a {@code CharacterEncodingFilter} for the given encoding.
	 * @param encoding the encoding to apply
	 * @since 4.2.3
	 * @see #setEncoding
	 */
	public CharacterEncodingFilter(String encoding) {
		this(encoding, false);
	}

forceEncoding是在request请求已有编码方式时,强行替换编码方式的条件,默认为false,然而这里被拆分成forceRequestEncoding和forceResponseEncoding两个部分,所以web.xml需要进行调整,调整之后为


	
		encodingFilter
		org.springframework.web.filter.CharacterEncodingFilter
		
			encoding
			utf-8
		
		
			forceRequestEncoding
			true
		
		
			forceResponseEncoding
			true
		
	
	
		encodingFilter
		/*
	

修改完毕后继续测试,依旧乱码!!!

百度之后发现,编码器如果没有正确设置,哪怕用了过滤器也会乱码,继续修改

springMVC框架下编码与解码(中文乱码)_第1张图片

设置完毕在测试,依旧乱码!!!!!

继续百度,终于发现,request.setCharacterEncoding()方法只针对post方法有效,对于get方法emmm,修改之后终于没有讨厌的乱码了。

至此问题解决!

ps:get方法中文乱码,如果有什么好的解决办法希望能教我一下,感谢!

你可能感兴趣的:(问题解决)