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.

InformationsquelleAutor TomasB | 2012-07-18