Символы не ASCII в переменной пути приложения Spring MVC при настройке встроенного сервера Tomcat с использованием Spring Boot

Я создаю сервис, используя Spring MVC, настроенный с помощью Spring Boot, где я хочу иметь возможность иметь произвольные символы Юникода в URL.

Просматривая веб-сайты, я получаю

@Configuration
@ComponentScan
@EnableAutoConfiguration
public class Main {
    public static void main(String... args) throws Exception {
        SpringApplication.run(Main.class, args);
    }

    @Bean
    public Filter characterEncodingFilter() {
        CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter();
        characterEncodingFilter.setEncoding("UTF-8");
        characterEncodingFilter.setForceEncoding(true);
        return characterEncodingFilter;
    }
}

а также

@Controller
public class WordController {

    @RequestMapping(valu,e="/word/{word}", method=RequestMethod.GET)
    public String greeting(Model model, @PathVariable("word") String word) {

        System.out.println(word);

        model.addAttribute("word", word);
        return "word";
    }

}

где шаблон «слово» просто выводит слово из модели.

Когда я запускаю сервер и ввожуhttp://localhost:8080/word/æøå в Chrome, текст, напечатанный на странице ответа (и в терминале)

æøå

который я думаю, что я признаю в качестве ISO-8859-1 интерпретацию датских буквæøå когда они на самом деле кодируются в UTF-8.

Глядя на сетевой инспектор Chrome, я вижу, что он на самом деле запрашиваетhttp://localhost:8080/word/%C3%A6%C3%B8%C3%A52 которая действительно кажется кодировкой URL-адреса строки в UTF-8.

Может кто-нибудь объяснить, почему Spring не анализирует переменную пути как UTF-8, несмотря на эту конфигурацию, и как это сделать?

Там, кажется, смешанные мнения о том,CharacterEncodingFilter на самом деле решает эту проблему. По крайней мере, в другом (не загрузочном) проекте Spring, который я используюweb.xml зарегистрироватьCharacterEncodingFilter, Здесь он успешно используется, чтобы POST-тела анализировались как UTF-8, но я не мог заставить его работать там и для переменных пути.

Этот ответ предполагает, что он должен быть настроен в настройках Tomcat. Если так, как это делается на встроенном сервере?

Ответы на вопрос(1)

Ваш ответ на вопрос