学习写代码呀

导航

SpringMVC返回字符串中文乱码

@ResponseBody
@RequestMapping(value = "/save")
public String callSomeone() {
    return "保存成功";
}
显示乱码
设置了CharacterEncodingFilter为UTF-8,
方法一:
指定RequestMapping的produces属性
@RequestMapping(value = "/addOrder",produces = "text/html;charset=utf-8")
    public String addOrder(){
        Order order = new Order(100,"连衣裙",8);
        orderService.addOrder(order);
        return "增加订单成功";
    }
方法二:
SpringMVC返回字符串的编码与StringHttpMessageConverter的DefaultCharset属性有关
修改StringHttpMessageConverter的DefaultCharset属性
新建一个工具类 AppUtil实现ApplicationContextAware接口,并监听ContextRefreshedEvent事件
@Component
public class AppUtil implements ApplicationContextAware, ApplicationListener<ContextRefreshedEvent> {
    private ApplicationContext app;
    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        this.app = applicationContext;
    }

    @Override
    public void onApplicationEvent(ContextRefreshedEvent event) {
        try {
            RequestMappingHandlerAdapter requestMappingHandlerAdapter = app.getBean(RequestMappingHandlerAdapter.class);
            if(requestMappingHandlerAdapter!=null) {
                List<HttpMessageConverter<?>> messageConverters = requestMappingHandlerAdapter.getMessageConverters();
                if(messageConverters!=null) {
                    // 获取bean容器中的StringHttpMessageConverter,并修改DefaultCharset属性
                    for(HttpMessageConverter item : messageConverters) {
                        if(item instanceof StringHttpMessageConverter) {
                            ((StringHttpMessageConverter) item).setDefaultCharset(StandardCharsets.UTF_8);
                        }
                    }
                }
            }
        }catch (BeansException e) {

        }
    }
}



<bean id="mappingJackson2HttpMessageConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
        <property name="supportedMediaTypes">
            <list>
                <value>text/html;charset=UTF-8</value>
            </list>
        </property>
    </bean>
设置返回json数据的编码为UTF-8。

posted on 2019-12-09 14:21  学习写代码呀  阅读(1114)  评论(0编辑  收藏  举报