SpringBoot字符编码处理
SpringBoot字符编码处理
Springboot处理字符编码可以通过Filter过滤器进⾏拦截实现,使⽤的是SpringWeb提供的CharacterEncodingFilter(字符编码过滤器类),将其FilterRegistrationBean注册,设置拦截路径就可以了。
@Configuration
public class ServletConfig {
@Bean
public FilterRegistrationBean filterRegistrationBean(){
FilterRegistrationBean registrationBean = new FilterRegistrationBean();
//CharacterEncodingFilter SpringWeb提供的过滤器类
CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter();
characterEncodingFilter.setForceEncoding(true);//强制编码
characterEncodingFilter.setEncoding("UTF-8");
springboot中文registrationBean.setFilter(characterEncodingFilter);//注册的过滤器拦截的路径
registrationBean.addUrlPatterns("/*");
return registrationBean;
}
}
注意:只有当在application.properties配置⽂件将abled=false后(默认是true),这个过滤器才会起作⽤。
测试:
在之前的HeServlet中输出到浏览器的信息添加点中⽂
public class HeServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("heServlet");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
heServlet to page by??
把配置⽂件以及在配置类中注册的过滤器Bean信息启⽤,在浏览器访问
有时候这么做了,但是 Writer().write("heServlet to page by九⽉");到浏览器的中⽂字符还是乱码,因为不同浏览器的默认返回编码不是UTF-8,这时候可以这么改。
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {        String name = Parameter("name");
System.out.println(name);
System.out.println("heServlet");
resp.setContentType("text/html;charset=UTf-8");
}
SpringBoot可以直接在配置⽂件中配置编码(建以使⽤)
ding.charset=UTF-8
abled=true
ding.force=true

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。