springmvc使用StringHttpMessageConverter需要配置編碼


Spring controller 如下

復制代碼
@Controller
public class SimpleController {

    @ResponseBody
    @RequestMapping(value = "/hotel")
    public String hotel() {
        return "{\"status\":0,\"errmsg\":null,\"data\":{\"query\":\"酒店查詢\",\"num\":65544,\"url\":\"www.test.com\"}}";
    }

}
復制代碼

 

這里使用ResponseBody, 返回值直接是一個字符串, 沒有用到jackson, 如果是返回一個Object, 使用jackson轉json, 是沒有編碼問題的

這時酒店查詢幾個字全都變成了問號

由於Spring處理返回值為String類型的結果時使用了StringHttpMessageConverter, 所以我們需要配置他的編碼

 

復制代碼
    <bean id="utf8Charset" class="java.nio.charset.Charset"
          factory-method="forName">
        <constructor-arg value="UTF-8"/>
    </bean>

    <mvc:annotation-driven>
        <mvc:message-converters>
            <bean class="org.springframework.http.converter.StringHttpMessageConverter">
                <constructor-arg ref="utf8Charset"/>
            </bean>
        </mvc:message-converters>
    </mvc:annotation-driven>
復制代碼

 






免責聲明!

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



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