Décodage en Base64, string en Java
Je suis en train de décoder une simple chaîne Base64, mais je suis incapable de le faire. Je suis actuellement en utilisant le org.apache.commons.codec.binary.Base64
paquet.
De la chaîne de test que j'utilise est: 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 jette pas une erreur, mais au lieu de cela n'est pas sortie de la chaîne décodée comme prévu.
- eh bien, tout d'abord, vous devez toujours spécifier un jeu de caractères lors de la conversion d'octets pour les caractères, peut-être "US-ASCII" pour vous exemple de chaîne (
new String(decodedBytes, "US-ASCII")
). - l'apache commons codec est construit à "travailler" dans le système de codage par défaut si vous ne spécifiez pas le contraire
- le code que vous avez posté fonctionne très bien pour moi, c'est que la totalité de l'échantillon?
- Le code que vous avez collé fonctionne bien pour moi. Êtes-vous certain que l'extrait de code est exécutée à tout? Avez-vous ajouté un peu de chaîne fixe println ou similaires?
- Que faut-il imprimer?
- Votre code fonctionne très bien et imprime "abcdefg".
- je n'ai aucune idée de ce que vous entendez par "juste travaillent dans le système de codage par défaut". quelle que soit la bibliothèque, lorsque vous convertissez des octets de caractères, vous devez toujours spécifier un jeu de caractères.
- J'ai essayé d'ajouter "UTF-8" pas de changement. @erickson - il l'impression de rien 🙁
- montrer l'ensemble de votre programme d'exemple
- Si elle imprime rien, le problème est ailleurs, dans votre programme, pas avec la Base-64 décodage.
- Édité ma réponse, cela devrait fonctionner.
Vous devez vous connecter pour publier un commentaire.
Modifier le package que vous utilisez:
Et ensuite l'utiliser comme ceci:
new String(decoded, "UTF-8")
La suivante devrait fonctionner avec la dernière version de Apache codec commun
et pour l'encodage
Couramment base64 il est utilisé pour les images. si vous le souhaitez pour décoder une image (jpg dans cet exemple, avec org.apache.commons.codec.binaires.Base64 paquet):
Si vous ne voulez pas utilisez apache, vous pouvez utiliser Java8: