[英]JNDI does not decode BASE64 string properly when connecting to LDAP
我正在使用JNDI连接到LDAP服务器。 服务器上的一些属性存储为BASE64字符串。
但是,当我查询服务器并获得结果时。 这些属性已经解码但不正确。 例如,“abc-def@domain.com”可以解码为“abcûdef@domain.com”。
关于如何解决这个问题的任何想法?
添加:
原始的BASE64字符串是:
Q049XCtHcm91cCBBUFNHLU9uLWJvYXJkaW5n4oCTTllDLE9VPU5ZQyxPV
20=
这看起来是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");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.