当前位置: 代码迷 >> Java Web开发 >> spring mvc返回中文字符串,结果却展示 “?”
  详细解决方案

spring mvc返回中文字符串,结果却展示 “?”

热度:178   发布时间:2016-04-16 21:59:37.0
spring mvc返回中文字符串,结果却显示 “??”
先上代码

@RequestMapping("test.ajax")
@ResponseBody
public String test(HttpServletResponse response) {
return "中文";
}

用过spring mvc的都知道上面这段代码是干嘛的,我的问题就是,请求test.ajax时,在浏览器上显示的是两个问号。我的配置应该是正确的,我统一使用UTF8,其他完整跑完mvc流程的映射方法都能正确显示中文。

个人认为是servlet在返回“中文”这两个字时,用了latin1来编码,但是Latin1的字符集中没有”中文“这两个字,就用了?来代替。
我尝试设置

response.setCharacterEncoding("utf8");
response.setContentType("text/plain; charset=utf-8");

也没有用
------解决方案--------------------
要配置一个bean的

<bean  class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" >  
    <property name="messageConverters">  
         <list>  
             <bean class = "org.springframework.http.converter.StringHttpMessageConverter">  
                <property name = "supportedMediaTypes">  
                     <list>  
                         <value>text/plain;charset=UTF-8</value>  
                     </list>  
                </property>  
             </bean>  
         </list>  
    </property>  
</bean>  

------解决方案--------------------

@RequestMapping(value = "test.ajax" , ,produces="text/plain;charset=UTF-8")
@ResponseBody
public String test(HttpServletResponse response) {
return "中文";
}

------解决方案--------------------
@RequestMapping(value = "test.ajax" , ,produces="text/plain;charset=UTF-8") => 
@RequestMapping(value = "test.ajax" , produces="text/plain;charset=UTF-8")
------解决方案--------------------
@RequestMapping(value = "test.ajax", produces = "text/plain;charset=UTF-8")
  相关解决方案