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。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM