zoukankan      html  css  js  c++  java
  • controller返回js中文变成?解决方案

      在使用spring-mvc的mvc的时候既享受它带来的便捷,又头痛它的一些问题,比如经典的中文乱码问题。现在是用json作为客户端和服务端 的数据交换格式貌似很流行,但是在springmvc中有时候会因为我们的各种疏忽从而造成页面ajax请求到的相应数据,如果带有中文常常是以 “????”显示,让人很恼火。在网上搜索后有很多解决的方案,方案都说中文乱码问题牵扯到springmvc的 StringHttpMessageConverter类,给出的答案都是自己去写个类继承它,然后用一堆眼花缭乱的配置去在beans.xml中去配 置,而且还必须要配置在<mvc:annotation-driven/>标签之前,否则。。。。
      我也出现了json中文乱码问题,搜出了一大堆方案后大喜,一个接一个的去测试。结果很失望:居然没一个能够解决我的问题!这不奇怪么,而且那么繁琐的过程让人望而生畏,又去是读源码又是覆盖方法什么,都说原因之所在于:

    public class StringHttpMessageConverter extends AbstractHttpMessageConverter<String> { 
    public static final Charset DEFAULT_CHARSET = Charset.forName("ISO-8859-1"); 

      解决方案:

        @RequestMapping(value="/getViewMsgByKey",produces = "text/html;charset=UTF-8")
        @ResponseBody
        public String getViewMsgByKey(HttpServletResponse response,String viewKey){
            response.setHeader("Cache-Control", "no-cache");      
            response.setContentType("text/json;charset=UTF-8");  
            response.setCharacterEncoding("UTF-8");  
            String viewMsg=configurationService.getViewMsgByKey(viewKey);
            return viewMsg;
        }  

         加入红色字体部分即可:
      在action中取得response,由他写入响应数据
      在aciton的需要返回json的方法的@requestmaping中写入 produces = "text/html;charset=UTF-8"

  • 相关阅读:
    (5)Linux权限管理
    paloalto防火墙版本升级
    paloalto防火墙安装内容和软件更新
    paloalto防火墙激活许可证和订阅
    paloalto防火墙注册
    paloalto防火墙执行初始配置
    paloalto防火墙的优势
    方位话机X2主、备用服务器问题
    心态
    paloalto防火墙接口使用方法及实例
  • 原文地址:https://www.cnblogs.com/shawWey/p/7196165.html
Copyright © 2011-2022 走看看