Не поможет я думаю. Я на эти грабли год назад натыкался. Это глюк в томкете. Пофиксил для себя. Он при создании юникодной строки когда ее из реквеста доставать создает ее с умолчательной кодировкой, то есть ISO8859-1.
public static String translateString(String string, String encoding) {
if(string == null || string.length() == 0)
return string;
char ca[] = string.toCharArray();
byte ba[] = new byte[ca.length];
for(int i = 0; i < ca.length; i++)
ba[i] = (byte)ca[i];
String translatedString;
try {
if(encoding == null)
translatedString = new String(ba); else
translatedString = new String(ba, encoding);
} catch(Exception e) {
translatedString = string;
}
return translatedString;
}
Можешь воспользоваться этой функцией для перекодировки. На вход даешь строку полученую у HttpServletRequest - a таким способом:
String lastname = request.getParameter("lastname");
А второй параметр - кодировка из того же реквеста. То есть получится
String translated = translateString(lastname, request.getCharacterEncoding())