Symbole inne niż ASCII w zmiennej ścieżki aplikacji Spring MVC na wbudowanym serwerze Tomcat za pomocą Spring Boot

Buduję usługę przy użyciu Spring MVC skonfigurowanego za pomocą Spring Boot, gdzie chcę mieć dowolne znaki Unicode w adresach URL.

Rozglądając się po sieci, kończę na

@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;
    }
}

i

@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";
    }

}

gdzie szablon „słowo” po prostu wypisuje słowo z modelu.

Kiedy uruchomię serwer i wejdęhttp://localhost:8080/word/æøå w Chrome tekst wydrukowany na stronie odpowiedzi (iw terminalu) jest

æøå

co uważam za interpretację duńskich liter ISO-8859-1æøå kiedy są faktycznie zakodowane w UTF-8.

Patrząc w inspektora sieci Chrome, widzę, że faktycznie pytahttp://localhost:8080/word/%C3%A6%C3%B8%C3%A52 co wydaje się być kodowaniem URL łańcucha w UTF-8.

Czy ktoś może wyjaśnić, dlaczego Spring nie analizuje zmiennej ścieżki jako UTF-8 pomimo tej konfiguracji i jak to zrobić?

Wydaje się, że mieszane opinie na temat tego, czyCharacterEncodingFilter faktycznie rozwiązuje ten problem. Przynajmniej w innym (innym niż Boot) projekcie Spring, którego używamweb.xml zarejestrowaćCharacterEncodingFilter. Tutaj jest z powodzeniem używany do sprawiania, że ​​ciała POST są analizowane jako UTF-8, ale ja też nie mogę sprawić, by działał dla zmiennych ścieżki.

Ta odpowiedź sugeruje skonfigurowanie go w ustawieniach Tomcat. Jeśli tak, jak to zrobić na wbudowanym serwerze?

questionAnswers(1)

yourAnswerToTheQuestion