На веб-сайте, с которым я пытаюсь помочь, пользователь может ввести URL-адрес в браузере, например следующие китайские символы,
http://localhost:8080?a=测试
На сервере получаем
GET /a=%E6%B5%8B%E8%AF%95 HTTP/1.1
Как видите, кодируется UTF-8, а затем URL. Мы можем справиться с этим правильно, установив кодировку UTF-8 в Tomcat.
Однако иногда мы получаем кодировку Latin1 в некоторых браузерах,
http://localhost:8080?a=ß
превращается в
GET /a=%DF HTTP/1.1
Есть ли способ правильно с этим справиться в Tomcat? Похоже, сервер должен сделать некоторые умные предположения. Мы не ожидаем, что с Latin1 будем корректно работать на 100%, но все лучше, чем то, что мы делаем сейчас, предполагая, что все это UTF-8.
Сервером является Tomcat 5.5. Поддерживаются следующие браузеры: IE 6+, Firefox 2+ и Safari на iPhone.