连接到 LDAP 时 JNDI 无法正确解码 BASE64 字符串
我正在使用 JNDI 连接到 LDAP 服务器。服务器上的一些属性存储为 BASE64 字符串。
但是,当我查询服务器并获取结果时。这些属性已被解码,但未正确解码。例如,“[email protected]”可能会解码为“abcû< a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="ed89888bad8982808c8483c38e8280">[电子邮件受保护]"。
知道如何解决这个问题吗?
补充:
原来的BASE64字符串是:
Q049XCtHcm91cCBBUFNHLU9uLWJvYXJkaW5n4oCTTllDLE9VPU5ZQyxPV
20=
I am using JNDI to connect to a LDAP server. A few attributes on the server are stored as BASE64 string.
However, when I query the server and get results back. These attributes are already decoded but not properly. For example, "[email protected]" may be decoded as "abcû[email protected]".
Any idea on how can I fix this?
Added:
The original BASE64 string is:
Q049XCtHcm91cCBBUFNHLU9uLWJvYXJkaW5n4oCTTllDLE9VPU5ZQyxPV
20=
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这看起来是 UTF16(Java 的本机字符格式)和 UTF8 之间的问题。对字符串进行编码的实体必须是 UTF8。
要从 UTF8 解码字符串,请使用:
这给了我正确的输出。如果您需要将 UTF8 字符串转换为 UTF16,您可以这样做:
This looks to be a problem between UTF16, which is Java's native character format, and UTF8. The entity that is encoding the string must be UTF8.
To decode a string from UTF8 use:
That gives me the right output. If you need to convert a UTF8 string to be UTF16 you'd do: