JNDI неправильно декодирует строку BASE64 при подключении к LDAP - PullRequest
0 голосов
/ 07 декабря 2011

Я использую JNDI для подключения к серверу LDAP.Несколько атрибутов на сервере хранятся в виде строки BASE64.

Однако, когда я запрашиваю сервер и получаю результаты обратно.Эти атрибуты уже декодированы, но не правильно.Например, «abc-def@domain.com» может быть расшифрован как «abcûdef@domain.com».

Есть идеи, как это исправить?

Добавлено:

Исходная строка BASE64:

Q049XCtHcm91cCBBUFNHLU9uLWJvYXJkaW5n4oCTTllDLE9VPU5ZQyxPV
 20=

1 Ответ

2 голосов
/ 07 декабря 2011

Это похоже на проблему между UTF16, который является нативным форматом символов Java, и UTF8.Сущность, кодирующая строку, должна иметь формат UTF8.

Для декодирования строки из UTF8 используйте:

// to decode a string
String decoded = new String(Base64.decodeBase64(encoded.getBytes()), "UTF8");

Это дает мне правильный вывод.Если вам нужно преобразовать строку UTF8 в UTF16, вы должны сделать:

new String(utf8String.getBytes(), "UTF8");
...