Символы не 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(value="/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.

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

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

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

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

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