Кодированное в UTF-8 имя пользователя j_security_check, неправильно декодированное как Latin-1 в области Tomcat

Я исследую проблему, когда имя пользователя с символом Latin-1 вводится в форму входа. Имя пользователя содержит символ á. Я исследую серверную часть, где у меня есть:

открытый класс MyRealm расширяет RealmBase реализует Realm {public Principal authenticate (String username, String password) {... фактическая аутентификация реализована здесь}}

Если я распечатываю байты: username.getBytes (), я вижу, что символ имеет: C3 83 C2 A1 Обычно символ в кодировке UTF8 должен иметь: C3 A1. Если я снова закодирую это в UTF8, я получу: C3 83 C2 A1, что печатает мое программное обеспечение.

Я проверил в сети, захватив, что имя пользователя отправлено правильно с C3 A1. Исходный код формы страницы входа:

        <form name="loginForm" action="j_security_check" method="post" enctype="application/x-www-form-urlencoded">
        <table>
            <tr>
                <td colspan="2" align="right">Secure connection:
                    <input type="checkbox" name="checkbox" class="style5" onclick="javascript:httpHttps();"></td>
            </tr>
            <tr>
                <td class="style5">Login:</td>
                <td><input type="text" name="j_username" autocomplete="off" style="width:150px" /></td>
            </tr>

Так что я думаю, что нет ничего плохого (2 раза преобразование UTF8) на стороне клиента. Если я дважды декодирую из UTF8 в функции authenticate () имя пользователя, аутентификация работает нормально, но я боюсь применить это решение к моей проблеме

Где мне искать эту кодировку имени пользователя в функции проверки подлинности Царства (String username, String password)? На стороне сервера работает Linux (RedHat) с httpd-2.2.15 и tomcat6-6.0.24.

Ответы на вопрос(1)

Ваш ответ на вопрос