鍍金池/ 問(wèn)答/Java  HTML/ ssm+shiro字符編碼問(wèn)題

ssm+shiro字符編碼問(wèn)題

目前在我的springMVC中配置了注解驅(qū)動(dòng)

    <mvc:annotation-driven>
      <mvc:message-converters>
        <bean class="org.springframework.http.converter.StringHttpMessageConverter">
            <property name="supportedMediaTypes">
                <list>
                    <value>text/html;charset=UTF-8</value>
                    <value>application/json;charset=UTF-8</value>
                </list>
            </property>
        </bean>
      </mvc:message-converters>
      </mvc:annotation-driven>

返回前臺(tái)的String是json格式 編碼格式正常
但是如果使用ajax請(qǐng)求的話 返回的編碼格式 中文亂碼

"title":"???"

后來(lái)我springMVC這樣配置

    <mvc:message-converters register-defaults="false">  
        避免IE執(zhí)行AJAX時(shí),返回JSON出現(xiàn)下載文件  
        <bean id="fastJsonHttpMessageConverter" class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter">  
            <property name="supportedMediaTypes">  
                <list>  
                    這里順序不能反,一定先寫(xiě)text/html,不然ie下出現(xiàn)下載提示  
                    <value>text/html;charset=UTF-8</value>  
                    <value>application/json;charset=UTF-8</value>  
                </list>  
            </property>  
        </bean>  
    </mvc:message-converters>
    
    

ajax請(qǐng)求返回的字符串不中文亂碼了 但是json字符串里面還是有中文亂碼 如果register-defaults=true
返回的json格式和ajax都沒(méi)有問(wèn)題 但是json 格式里面有"\"

我目前的項(xiàng)目框架是ssm+shiro login使用ajax請(qǐng)求 然后登陸成功后根據(jù)權(quán)限加載出側(cè)邊導(dǎo)航欄 使用了layui前端框架 返回的導(dǎo)航欄格式為json字符串

目前的問(wèn)題就是 ajax通過(guò)不同的msg給用戶提示 如 用戶名/密碼錯(cuò)誤 如果在@RequestMapping里面設(shè)置produces 是完全沒(méi)有問(wèn)題的 但是我不想每個(gè)controller都這樣寫(xiě)啊

求助求助

回答
編輯回答
浪婳

有配置編碼過(guò)濾器嗎

2017年9月7日 07:59
編輯回答
尤禮

問(wèn)題解決了

<mvc:message-converters register-defaults="true">
    <bean class="org.springframework.http.converter.StringHttpMessageConverter">
        <property name="supportedMediaTypes">
            <list>
                <value>text/html;charset=UTF-8</value>
                <value>application/json;charset=UTF-8</value>
            </list>
        </property>
    </bean>
     <bean id="fastJsonHttpMessageConverter" class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter">  
            <property name="supportedMediaTypes">  
                <list>  
                    <value>text/html;charset=UTF-8</value>  
                    <value>application/json;charset=UTF-8</value>  
                </list>  
            </property>  
     </bean>
  </mvc:message-converters>
  

早上來(lái)了靈感 看見(jiàn)<bean>標(biāo)簽突然來(lái)了靈感 既然是bean注入的 那就注入多個(gè)bean試試??
然后果然解決了string類(lèi)型和json字符串格式下的編碼格式中文亂碼 和中文出現(xiàn)后反斜杠的問(wèn)題
不同的是返回的結(jié)果都采取了fastJson格式 使用ajax的時(shí)候還出現(xiàn)了小問(wèn)題 status=200 但是都進(jìn)入了error方法 嘻嘻 后來(lái)發(fā)現(xiàn)是接受格式錯(cuò)誤的問(wèn)題 dataType:json 就解決了 此貼終結(jié)

2017年10月15日 12:02