На веб-сайте, с которым я пытаюсь помочь, пользователь может ввести 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? Похоже, сервер должен делать некоторые разумные угадывания. Мы не ожидаем корректной обработки латинского языка 100%, но что-то лучше, чем то, что мы делаем сейчас, предполагая, что все это UTF-8.
Сервер Tomcat 5.5. Поддерживаемые браузеры - IE 6+, Firefox 2+ и Safari на iPhone.