Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring 接收到控制器请求中非unicode字符的错误表示形式(“xD0”和“xD0”和“xBE”,而不是“x421”和“x44B”和“x440”)_Spring_Spring Mvc_Web - Fatal编程技术网

Spring 接收到控制器请求中非unicode字符的错误表示形式(“xD0”和“xD0”和“xBE”,而不是“x421”和“x44B”和“x440”)

Spring 接收到控制器请求中非unicode字符的错误表示形式(“xD0”和“xD0”和“xBE”,而不是“x421”和“x44B”和“x440”),spring,spring-mvc,web,Spring,Spring Mvc,Web,这是我的控制器: @RequestMapping(value = "/item/products", method = RequestMethod.GET) @ResponseBody public ProductDto[] getProducts(Pageable pageable, @RequestParam(value = "searchDto", required = false) String serializedDto) throws IOException { 我提出以下请求:

这是我的控制器:

@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":"Сыр"}
问题是在编码方面,我尝试了很多方法,但都不起作用。
我做错了什么?如果您需要更多代码/资料,我将提供。

字符编码过滤器
的实例注册为
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>
@Configuration
public class WebConfig {  
      @Bean
      public Filter CharacterEncodingFilter() {
        CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter();
        characterEncodingFilter.setEncoding("UTF-8");
        return CharacterEncodingFilter;
      }
    }

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>
@Configuration
public class WebConfig {  
      @Bean
      public Filter CharacterEncodingFilter() {
        CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter();
        characterEncodingFilter.setEncoding("UTF-8");
        return CharacterEncodingFilter;
      }
    }

如果使用Tomcat,则默认情况下忽略了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>

org.apache.tomcat.maven

如果您使用的是Tomcat,那么默认情况下,它忽略了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>

org.apache.tomcat.maven

我在
web.xml
中已经有了该代码,并且刚刚添加了@Bean配置,问题仍然存在。我在
web.xml
中已经有了该代码,并且刚刚添加了@Bean配置,问题仍然存在。