java - SpringMVC4.3.7在使用@ResponseBody注解并返回含有中文字符串时字符串显示为问号的问题
PHP中文网
PHP中文网 2017-04-18 10:49:27
0
3
608

实际上是想用来做JSON的返回,团队比较习惯用org.json。。。。

在项目中使用了@ResponseBody来注解一个返回值为String的函数。函数里边获取了一些键值对,键值对用org.json转成了json格式,然而在输出的时候出了问题。响应结果中所有的中文都变成了问号,而在return前直接用System.out.println输出到控制台却不是乱码或者问号。在网上搜了一些解决方案,不管是加在RequestMapping里的content-type(完全看不到变化)还是加在xml的annotation-driven(直接编辑器保错找不见这么个用法)。求教这个版本的SpringMVC应该如何从根本上解决掉乱码问题?
至于为啥不用直接返回Jackson的生成方式,额。。。。。。实在解决不了乱码问题再考虑。。。

PHP中文网
PHP中文网

认证高级PHP讲师

reply all(3)
刘奇

Try adding startup parameters: -Dfile.encoding=utf-8

Based on your description, I guess it’s a problem with MessageConverter

大家讲道理

Add this

<bean
        class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
        <property name="messageConverters">
            <list>
                <ref bean="jsonMessageConverter" />
            </list>
        </property>
    </bean>

    <!-- Configure bean to convert JSON to POJO and vice versa -->
    <bean id="jsonMessageConverter"
        class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
    </bean>
阿神

It has been solved. Annotation-driven is not supported because the namespace definition file referenced by the xml header generated by idea itself is 3.0. Just change it to the latest one. In the end, the message-converter is reset through annotation-driven. Encoded properties.

Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template