javax.xml.bind est Base64 encodeur/décodeur mange deux derniers caractères de la chaîne

J'ai besoin de convertir des chaînes de caractères à l'aide de l'encodage Base64, et a été ravi de voir que je n'avais pas rouler mes propres converter--Java fournit un avec javax.xml.bind.DataConverter. Cependant, il a quelques problèmes. Voici la sortie de mon temps avec un Jython REPL:

>>> import javax.xml.bind.DatatypeConverter as DC
>>> import java.lang.String as String
>>> def foo(text):
...   return DC.printBase64Binary(DC.parseBase64Binary(String(text)))
... 
>>> foo("hello")
'hell'
>>> foo("This, it's a punctuated sentence.")
'Thisitsapunctuatedsenten'
>>> foo("\"foo\" \"bar\"")
'foob'
>>> foo("\"foo\" \"bar\"12")
'foobar12'
>>> foo("\"foo\" \"bar\"1")
'foob'

Comme vous pouvez le voir, il ne gère pas les caractères non-alphanumériques à tous, et aussi souvent-mais pas toujours-tronque la chaîne de deux caractères.

Je suppose que c'est peut-être temps pour tout écrire ma propre classe, mais maintenant, je suis gêné que a) je ne suis pas à la lecture de la javadoc ou quelque chose b) La classe ne fonctionne pas comme prévu.

De sorte que toute aide est très appréciée, merci d'avance.

double possible de Décodage en Base64 de données en java
Je ne le pense pas... ça ne veut pas parler de la situation dans cette question.
J'ai déjà regardé ce post plusieurs fois 🙂 Le problème est que je ne peux pas utiliser des bibliothèques tierces. C'est là que j'ai eu l'idée d'essayer javax.xml.bind.

OriginalL'auteur tsm | 2011-06-07