#jboss-4.2.x
#jboss-4.2.x
Вопрос:
Я использую класс JBOSS 4.2.3
и UsernamePasswordLoginModule
, который расширяется пользовательским классом, который переопределяет метод validatePassword
. Этот метод имеет два параметра inputPassword
и expectedPassword
. Клиент отправляет Base64 encoded loginId:password
на сервер, а сервер декодирует с помощью base64
. Сервер декодирует учетные данные с помощью iso-8859-1
(я проверил, просмотрев символы с ударением в онлайн-инструменте преобразования, и это было эквивалентно выводу iso, а не UTF-8). Поскольку iso не поддерживает международные символы, и мне нужно использовать UTF-8, но я не понял, где эта кодировка iso использовалась, если мы делаем Base64 decode
. Я искал Base64
метод декодирования, но кодировка не была указана.
Мой вопрос заключается в том, есть ли у нас какой-либо механизм для установки кодировки в вышеупомянутом сценарии. Требование заключается в том, что клиент отправит UTF-8 data
, и мне нужно декодировать с помощью UTF8
. Заранее спасибо.
Ответ №1:
Кодирование и декодирование строк в Base64 — это двухэтапный процесс:
[Кодировка] Строка -> байт[] -> Строка (в кодировке base64)
[Декодирование] Строка (в кодировке base64) -> байт[] -> Строка
Кодировку символов необходимо установить с помощью шагов, выделенных жирным шрифтом.
Для кодирования это означало бы выполнение:
String s;
byte[] bytes = s.getBytes("UTF-8");
Для декодирования это было бы:
byte[] bytes;
String s = new String(bytes, "UTF-8");