2016-05-05 5 views
2

У меня есть простой RestController, который возвращает юникод строку: «???»Spring @RestController не может вернуть Юникода

@RestController 
@RequestMapping(path = "/") 
public class FooController { 
    @RequestMapping(method = RequestMethod.GET) 
    public String test() throws Exception { 
     return "ỗ ẵ ẫ ậ ự"; 
    } 
} 

Но при запуске, он отображает только , Как я могу решить эту проблему, я уже имел такую ​​конфигурацию в web.xml:

<filter> 
     <filter-name>characterEncodingFilter</filter-name> 
     <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> 
     <init-param> 
      <param-name>encoding</param-name> 
      <param-value>UTF-8</param-value> 
     </init-param> 
     <init-param> 
      <param-name>forceEncoding</param-name> 
      <param-value>true</param-value> 
     </init-param> 
    </filter> 
    <filter-mapping> 
     <filter-name>characterEncodingFilter</filter-name> 
     <url-pattern>/*</url-pattern> 
    </filter-mapping> 

И когда я проверяю с простым HTTPServlet, он может вернуться выше юникод строки.

+1

Что такое 'Content-type' из ваш ответный заголовок? – Blank

+0

@Reno я не установил. – yelliver

ответ

0

В случае, если другие сталкиваются с тем же ...
Добавить Производит аннотацию с кодировкой = UTF-8
Затем используйте ответ объект как:

@RestController 
@RequestMapping(path = "/") 
@Produces(MediaType.TEXT_PLAIN + ";charset=utf-8") 
public class FooController { 
    @RequestMapping(method = RequestMethod.GET) 
    public Response test() throws Exception { 
      return Response.status(HttpStatus.OK).entity("ỗ ẵ ẫ ậ ự").build(); 
    } 
} 
Смежные вопросы