javax.xml.bind的Base64编码器/解码器吃掉字符串的最后两个字符
发布时间:2020-12-15 05:19:42 所属栏目:Java 来源:网络整理
导读:我需要使用Base64编码转换一些字符串,并且很高兴看到我不必滚动我自己的转换器 – Java提供了一个javax.xml.bind.DataConverter.但是,它有一些问题.这是我使用Jython REPL的时间输出: import javax.xml.bind.DatatypeConverter as DC import java.lang.Stri
我需要使用Base64编码转换一些字符串,并且很高兴看到我不必滚动我自己的转换器 –
Java提供了一个javax.xml.bind.DataConverter.但是,它有一些问题.这是我使用Jython REPL的时间输出:
>>> import javax.xml.bind.DatatypeConverter as DC >>> import java.lang.String as String >>> def foo(text): ... return DC.printBase64Binary(DC.parseBase64Binary(String(text))) ... >>> foo("hello") 'hell' >>> foo("This,it's a punctuated sentence.") 'Thisitsapunctuatedsenten' >>> foo(""foo" "bar"") 'foob' >>> foo(""foo" "bar"12") 'foobar12' >>> foo(""foo" "bar"1") 'foob' 正如您所看到的,它根本不处理非字母数字字符,并且经常 – 但不总是 – 将字符串截断两个字符. 我想这可能是时候编写我自己的类了,但是现在我很烦恼a)我没有阅读javadoc或其他东西b)该类没有按预期工作. 所以任何帮助都非常感谢;提前致谢. 解决方法
hello不是base64字符串,因此解析失败.您必须将字符串转换为字节数组(尝试String(text).getBytes(‘UTF-8’)),然后在字节数组上调用DC.printBase64Binary()以获取Base64中的数据.
然后DC.parseBase64Binary()将此Base64编码数据转换回字节数组(然后您可以将其转换回字符串). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |