Spring MVC:@PathVariable不适用于西里尔文

问题描述:

我正在尝试开发按字系统进行搜索。我有一个输入,我键入我的单词并提交重定向到发现结果的页面,像这样的链接这样的链接localhost:8080/Project/search/word和一切工作正常。Spring MVC:@PathVariable不适用于西里尔文

但是,当我尝试搜索西里尔字('дума')时,它什么也找不到。在URL提出 'дума',但在Java调试控制台显示дума作为???????°

这是我WebAppInitializer

public class WebInitializer extends AbstractAnnotationConfigDispatcherServletInitializer { 

protected Class<?>[] getRootConfigClasses() { 
    return new Class[]{ WebConfig.class }; 
} 

protected Class<?>[] getServletConfigClasses() { 
    return null; 
} 

protected String[] getServletMappings() { 
    return new String[]{ "/" }; 
} 

protected Filter[] getServletFilters(HttpServletRequest request) { 
    CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter(); 
    characterEncodingFilter.setForceEncoding(true); 
    characterEncodingFilter.setEncoding("UTF-8"); 
    return new Filter[] { characterEncodingFilter}; 
} 
} 

控制器:

@RequestMapping(value = {"/search/word/{word}", "/search/word/{word}/page/{page}"}, method = RequestMethod.GET, 
     produces = "text/plain;charset=UTF-8") 
public ModelAndView getSearchVideoByTitlePage(@PathVariable("word") String word, 
     @PathVariable(value = "page", required = false) Integer page, HttpServletRequest request, 
     HttpSession session) 

@RequestParam正常工作与cyrllic,但@PathVariable没有按“T。我已经阅读了很多关于这个问题的文章,但是我找不到解决我的问题和配置的问题。我尝试了使用Tomcat连接器URIEncoding,但它也不起作用。

我注意到,在我的characterEncodingFilter的配置中,我缺少URL映射,必须是/*,但我不知道如何设置它。

如果你认为你对我的配置类型有一些解决方案,或者你可以给我推荐另一个类似的配置并解释它是如何工作的,我将非常感激。

预先感谢您。

我找到解决的办法是Tomcat的设置连接设置为URIEncoding="UTF-8",然后在我的控制器使用URL编码器和解码器是这样的:

String decodedWord = URLDecoder.decode(word, "UTF-8");