在SpringMvc模式中,有时候明明在相关配置或通过URL连接收到服务端返回的inputstream时,做了类似如下转换:in = new Scanner(conn.getInputStream(),“UTF-8”);这样就可以保证post出去的是UTF-8,接收到的也是UTF-8,但是依然会出现中文乱码的情况,这时,我们就可以利用过滤器来解决中文乱码的问题。
代码如下:
public void addFilter(Context context, Filter filterObj, String... filterPath){
FilterDef filterDef = new FilterDef();
filterDef.setFilter(filterObj); //设置过滤器对象
filterDef.setFilterName(filterObj.getClass().getSimpleName());//设置过滤器名称
FilterMap filterMap = new FilterMap();
for(String path : filterPath){
filterMap.addURLPatternDecoded(path);//设置过滤范围,可多次添加
}
filterMap.setFilterName(filterObj.getClass().getSimpleName()); //该过滤范围应用的过滤器
//注册
context.addFilterDef(filterDef);
context.addFilterMap(filterMap);
}
this.addFilter(context,
new CharacterEncodingFilter("utf-8",true),
"/*");