2015-08-16 16 views
1

這裏是我的控制器:接收請求中的非Unicode字符錯誤表示到控制器( 「Ðо」 而不是 「Сыр」)

@RequestMapping(value = "/item/products", method = RequestMethod.GET) 
@ResponseBody 
public ProductDto[] getProducts(Pageable pageable, @RequestParam(value = "searchDto", required = false) String serializedDto) throws IOException { 

我送這個請求:

...item/products?page=0&size=10&sort=status,asc&sort=id,asc&searchDto={"name":"Сыр"} 

「 Сыр」 - 西里爾

而在控制器我收到此:

serializedDto = {"name":"Ðо"} 

,而不是這樣的:

serializedDto = {"name":"Сыр"} 

問題是編碼,我已經嘗試了很多東西,但他們沒有工作。 我做錯了什麼?如果你需要更多的代碼/材料,我會提供。

回答

0

如果您使用的是Tomcat則認爲,在默認情況下它是ignorin g url參數編碼。對Maven插件添加下面的配置:

 <plugin> 
      <groupId>org.apache.tomcat.maven</groupId> 
      <artifactId>tomcat7-maven-plugin</artifactId> 
      <version>2.2</version> 
      <configuration> 
       <uriEncoding>utf-8</uriEncoding> 
      </configuration> 
     </plugin> 

,或者配置tomcat http connector

0

CharacterEncodingFilter的實例註冊爲ServletFilter。在一個典型的Spring MVC的Java配置你有一個像下面AbstractAnnotationConfigDispatcherServletInitializer類的擴展:

@Override 
protected Filter[] getServletFilters() { 
     CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter(); 
     characterEncodingFilter.setEncoding("UTF-8"); 
     return new Filter[] { characterEncodingFilter}; 
     } 

傳統的Spring MVC應用程序會一直一個web.xml這樣的:

<filter> 
    <filter-name>encodingFilter</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> 
</filter> 

<filter-mapping> 
    <filter-name>encodingFilter</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 

在啓動Web應用程序,只一個過濾器bean添加到您的網絡配置,這樣的事情:

@Configuration 
public class WebConfig { 
     @Bean 
     public Filter CharacterEncodingFilter() { 
     CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter(); 
     characterEncodingFilter.setEncoding("UTF-8"); 
     return CharacterEncodingFilter; 
     } 
    } 
+0

我已經有這樣的代碼在'web.xml',和剛纔添加@Bean配置,仍然問題仍然存在。 – Arcaniel

相關問題