J'essaie de décoder une chaîne Base64 simple, mais je ne peux pas le faire. J'utilise actuellement le org.Apache.commons.codec.binary.Base64
paquet.
La chaîne de test que j'utilise est la suivante: abcdefg
, codé à l'aide de PHP YWJjZGVmZw==
.
C'est le code que j'utilise actuellement:
Base64 decoder = new Base64();
byte[] decodedBytes = decoder.decode("YWJjZGVmZw==");
System.out.println(new String(decodedBytes) + "\n") ;
Le code ci-dessus ne génère pas d'erreur, mais ne génère pas la chaîne décodée comme prévu.
Modifiez le package que vous utilisez:
import org.Apache.commons.codec.binary.Base64;
Et puis utilisez-le comme ceci:
byte[] decoded = Base64.decodeBase64("YWJjZGVmZw==");
System.out.println(new String(decoded, "UTF-8") + "\n");
Ce qui suit devrait fonctionner avec la dernière version du codec commun Apache.
byte[] decodedBytes = Base64.getDecoder().decode("YWJjZGVmZw==");
System.out.println(new String(decodedBytes));
et pour l'encodage
byte[] encodedBytes = Base64.getEncoder().encode(decodedBytes);
System.out.println(new String(encodedBytes));
Communément base64 il est utilisé pour les images. si vous souhaitez décoder une image (jpg dans cet exemple avec le package org.Apache.commons.codec.binary.Base64):
byte[] decoded = Base64.decodeBase64(imageJpgInBase64);
FileOutputStream fos = null;
fos = new FileOutputStream("C:\\output\\image.jpg");
fos.write(decoded);
fos.close();
Si vous ne voulez pas utiliser Apache, vous pouvez utiliser Java8:
byte[] decodedBytes = Base64.getDecoder().decode("YWJjZGVmZw==");
System.out.println(new String(decodedBytes) + "\n");