У меня были некоторые проблемы с чтением и записью UTF-8 из сервлетов в Tomcat 6 / Linux. запрос и ответ были utf-8, браузер был utf-8, URIEncoding был установлен в server.xml как на соединителях, так и на хостах. Короче говоря, все известные мне вещи в самом коде и конфигурации сервера были utf-8.
При чтении запроса мне пришлось взять байтовый массив из String, а затем снова преобразовать этот байтовый массив в String. При написании запроса мне приходилось писать байты, а не саму String, чтобы получить правильный ответ (в противном случае я бы получил исключение, в котором говорится, что некоторые символы, не входящие в ASCII, недопустимы ISO 8859-1).