Java / Groovy 中的 Base64 编码
在Java中将字节[]转换为Base64字符串的正确方法是什么?更好的是 Grails / Groovy,因为它告诉我 encodeAsBase64()
函数已被弃用。不建议使用 sun.misc.BASE64Encoder
包,它会在某些 Windows 平台上输出不同大小的字符串。
What is the proper way to convert a byte [] to a Base64 string in Java? Better yet would be Grails / Groovy because it tells me that the encodeAsBase64()
function is deprecated. The sun.misc.BASE64Encoder
package isn't recommended for use and outputs a different size string on some Windows platforms.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
在 groovy 中执行此操作的首选方法是:
The preferred way to do this in groovy is:
Apache Commons 有许多实用程序:
二进制包: http://commons.apache .org/codec/apidocs/org/apache/commons/codec/binary/Base64.html
下载:
http://commons.apache.org/codec/download_codec.cgi
Apache Commons has many utilities:
Binary Package: http://commons.apache.org/codec/apidocs/org/apache/commons/codec/binary/Base64.html
Download:
http://commons.apache.org/codec/download_codec.cgi
像这样实现你自己的方法:)
}
Implement your own method like this :)
}
您可以使用开源 Base64Coder 库
You could use the open source Base64Coder library
(将其添加到此线程中是希望其他人能够对此感兴趣,而不必浪费他的宝贵时间)
今天,当我尝试添加 Grails 2.3.11/Groovy 2.1.9 应用程序时,我遇到了阻碍 的输出
作为 DOM 元素的
data-
属性 。但是相应JavaScript中的atob()
,即从data属性解码Base64字符串的代码,不断抱怨非法字符,而其他解码器,例如base64 -d
毫无问题地接受相同的 Base64 字符串。解决方案是强制
render()
返回值为单个字符串,然后应用 Base64 编码,即或(如果您认为
encodeAsBase64()
已弃用):(adding this to this thread in the hopes that somebody else will get a hit on this and doesn't have to waste his valuable time)
I got stymied today when I tried to add in my Grails 2.3.11/Groovy 2.1.9 application the output of
as a
data-
attribute to a DOM element. But theatob()
in the corresponding JavaScript, i.e. the code that decodes the Base64 string from the data attribute, kept complaining about illegal characters, while other decoders, e.g.base64 -d
accepted the same Base64 string without problems.The solution is to force the
render()
return value to a single string and then apply the Base64 encoding, i.e.or (if you consider
encodeAsBase64()
as deprecated):