Groovy supported Base64 encoding for a long time. Since Groovy 2.5.0 we can also use Base64 URL and Filename Safe encoding to encode a byte array with the method encodeBase64Url
. The result is a Writable
object. We can invoke the toString
method on the Writable
object to get a String
value. An encoded String
value can be decoded using the same encoding with the method decodeBase64Url
that is added to the String
class.
In the following example Groovy code we encode and decode a byte array:
import static java.nio.charset.StandardCharsets.UTF_8 def message = 'Groovy rocks!' // Get bytes array for String using UTF8. def messageBytes = message.getBytes(UTF_8) // Encode using Base64 URL and Filename encoding. def messageBase64Url = messageBytes.encodeBase64Url().toString() // Encode using Base64 URL and Filename encoding with padding. def messageBase64UrlPad = messageBytes.encodeBase64Url(true).toString() assert messageBase64Url == 'R3Jvb3Z5IHJvY2tzIQ' assert messageBase64UrlPad == 'R3Jvb3Z5IHJvY2tzIQ==' // Decode the String values. assert new String(messageBase64Url.decodeBase64Url()) == 'Groovy rocks!' assert new String(messageBase64UrlPad.decodeBase64Url()) == 'Groovy rocks!'
Written with Groovy 2.5.0.