Base 64 encode and decode example code
First:
- Choose an encoding. UTF-8 is generally a good choice; stick to an encoding which will definitely be valid on both sides. It would be rare to use something other than UTF-8 or UTF-16.
Transmitting end:
- Encode the string to bytes (e.g.
text.getBytes(encodingName)
) - Encode the bytes to base64 using the
Base64
class - Transmit the base64
Receiving end:
- Receive the base64
- Decode the base64 to bytes using the
Base64
class - Decode the bytes to a string (e.g.
new String(bytes, encodingName)
)
So something like:
// Sending side
byte[] data = text.getBytes("UTF-8");
String base64 = Base64.encodeToString(data, Base64.DEFAULT);
// Receiving side
byte[] data = Base64.decode(base64, Base64.DEFAULT);
String text = new String(data, "UTF-8");
Or with StandardCharsets
:
// Sending side
byte[] data = text.getBytes(StandardCharsets.UTF_8);
String base64 = Base64.encodeToString(data, Base64.DEFAULT);
// Receiving side
byte[] data = Base64.decode(base64, Base64.DEFAULT);
String text = new String(data, StandardCharsets.UTF_8);
Base64 Java encode and decode a string
You can use following approach:
import org.apache.commons.codec.binary.Base64;
// Encode data on your side using BASE64
byte[] bytesEncoded = Base64.encodeBase64(str.getBytes());
System.out.println("encoded value is " + new String(bytesEncoded));
// Decode data on other side, by processing encoded data
byte[] valueDecoded = Base64.decodeBase64(bytesEncoded);
System.out.println("Decoded value is " + new String(valueDecoded));
Hope this answers your doubt.
How do I encode and decode a base64 string?
Encode
public static string Base64Encode(string plainText) {
var plainTextBytes = System.Text.Encoding.UTF8.GetBytes(plainText);
return System.Convert.ToBase64String(plainTextBytes);
}
Decode
public static string Base64Decode(string base64EncodedData) {
var base64EncodedBytes = System.Convert.FromBase64String(base64EncodedData);
return System.Text.Encoding.UTF8.GetString(base64EncodedBytes);
}
base 64 encode and decode a string in angular (2+)
Use the btoa()
function to encode:
console.log(btoa("password")); // cGFzc3dvcmQ=
How to encode and decode Base64 and Base64Url in Flutter / Dart
The dart:convert
library contains an encoder and decoder for Base64 and Base64Url. However, they encode and decode Lists of integers, so for strings you also need to encode and decode in UTF-8. Rather than doing these two encodings separately, you can combine them with fuse
.
You need to have the following import:
import 'dart:convert';
Base64
String credentials = "username:password";
Codec<String, String> stringToBase64 = utf8.fuse(base64);
String encoded = stringToBase64.encode(credentials); // dXNlcm5hbWU6cGFzc3dvcmQ=
String decoded = stringToBase64.decode(encoded); // username:password
Note that this is equivalent to:
String encoded = base64.encode(utf8.encode(credentials)); // dXNlcm5hbWU6cGFzc3dvcmQ=
String decoded = utf8.decode(base64.decode(encoded)); // username:password
Base64Url
String credentials = "username:password";
Codec<String, String> stringToBase64Url = utf8.fuse(base64Url);
String encoded = stringToBase64Url.encode(credentials); // dXNlcm5hbWU6cGFzc3dvcmQ=
String decoded = stringToBase64Url.decode(encoded); // username:password
Again, this is equivalent to:
String encoded = base64Url.encode(utf8.encode(credentials)); // dXNlcm5hbWU6cGFzc3dvcmQ=
String decoded = utf8.decode(base64Url.decode(encoded)); // username:password
See also
- RCF 4648
- String based data encoding: Base64 vs Base64url
Decode Base64 data in Java
As of v6, Java SE ships with JAXB. javax.xml.bind.DatatypeConverter
has static methods that make this easy. See parseBase64Binary()
and printBase64Binary()
.
UPDATE: JAXB is no longer shipped with Java (since Java 11). If JAXB is required for your project, you will need to configure the relevant libraries via your dependency management system, for example Maven. If you require the compiler (xjc.exe
) you also need to download that separately.
How can you encode a string to Base64 in JavaScript?
You can use btoa()
and atob()
to convert to and from base64 encoding.
There appears to be some confusion in the comments regarding what these functions accept/return, so…
btoa()
accepts a “string” where each character represents an 8-bit byte – if you pass a string containing characters that can’t be represented in 8 bits, it will probably break. This isn’t a problem if you’re actually treating the string as a byte array, but if you’re trying to do something else then you’ll have to encode it first.atob()
returns a “string” where each character represents an 8-bit byte – that is, its value will be between0
and0xff
. This does not mean it’s ASCII – presumably if you’re using this function at all, you expect to be working with binary data and not text.
See also:
- How do I load binary image data using Javascript and XMLHttpRequest?
Most comments here are outdated. You can probably use both btoa()
and atob()
, unless you support really outdated browsers.
Check here:
- https://caniuse.com/?search=atob
- https://caniuse.com/?search=btoa
Related Topics
Remove HTML Tags from a String
How to Call a Method After a Delay in Android
Can't Create Directory in Android 10
Android: Internet Connectivity Change Listener
Connect Java to a MySQL Database
Calculating the Difference Between Two Java Date Instances
How to Invoke a Java Method When Given the Method Name as a String
What Is the Meaning of "This" in Java
Why Don't Java Generics Support Primitive Types
How to Send Http Request in Java
What's the Best Way to Share Data Between Activities
How to Return a Boolean from Asynctask
Parsing Query Strings on Android
Distinguishing Between Java Threads and Os Threads
Why Am I Getting a Noclassdeffounderror in Java
How to Import the Javax.Servlet/Jakarta.Servlet API in My Eclipse Project