Springmvcプロジェクト設定ResponseBody戻りString符号化

4900 ワード

質問シーン


現在、プロジェクトとブラウザは一般的にutf 8符号化されており、ブラウザを介してバックエンドインタフェースにアクセスする場合は通常問題ありません.
バックエンドで別のサービスのインタフェースを呼び出すと、戻り値の符号化はデフォルトiso-8859-1で、文字列に中国語が含まれている場合、呼び出し元は文字化けします.

ソリューション


springmvcプロファイルを変更し、convertersを追加します.コードは次のとおりです.
<mvc:annotation-driven>
    <mvc:message-converters>
        <bean class="org.springframework.http.converter.StringHttpMessageConverter">
            <property name="supportedMediaTypes">
                <list>
                    <value>text/plain;charset=UTF-8value>
                list>
            property>
        bean>
    mvc:message-converters>
mvc:annotation-driven>

または
<mvc:annotation-driven>
    <mvc:message-converters>
        <bean class="org.springframework.http.converter.StringHttpMessageConverter">
            <constructor-arg value="UTF-8" />
        bean>
    mvc:message-converters>
mvc:annotation-driven>

サービス側はresponse headerに符号化を設定し、デフォルトの符号化が設定されていないシーンでは文字化けは発生しません.