繁体   English   中英

连接到LDAP时,JNDI不会正确解码BASE64字符串

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM