2010-02-15 27 views

Respuesta

22

No use sun.misc o com.sun clases. No se garantiza que sean consistentes entre las diferentes versiones de la jre.

Uso commons-codecBase64.encodeBase64(..) y Base64.decodeBase64(..)

+0

jeje .. Envié mi proyecto reciente en el que sun.misc.BASE64Encoder/Decoder se usaba para un cliente. No sabía acerca de la inconsistencia en diferentes jre's. Espero que sea un problema raro. – Roman

+6

sí, espero que sea su única opción;) – Bozho

+2

En realidad, ha funcionado bien desde JDK 1.1, pero sigue siendo feo usar API internas. Desde un punto de vista puramente práctico, no tienes nada de qué preocuparte. –

0

Creo que desee:

String s = "Hello world"; 
new sun.misc.BASE64Encoder().encode(s.getBytes("UTF-8")); 

Mejor aún, utilice las utilidades Comunes como la respuesta anterior sugiere. Solo use sun.misc.Base64Encoder si no puede permitirse agregar la dependencia externa en otro jar.

7

Primero decodificando cadena "cadena de prueba XML:", que no es realmente válido Base64, ya que contiene espacios y dos puntos, ninguno de los cuales son caracteres B64 válidos. Creo que te referías a codificar continuación decodificación, así:

(new sun.misc.BASE64Decoder().decodeBuffer(new sun.misc.BASE64Encoder().encode("test string XML:")) 
+0

Sería más claro con los métodos de extensión ... –

+2

codificar solo acepta una byte [], no una cadena. –

15

Uso Clase:

javax.xml.bind.DatatypeConverter 

Tiene 2 métodos de interés:

public static byte[] parseBase64Binary(String lexicalXSDBase64Binary) 
public static String printBase64Binary(byte[] val) 
+1

He estado buscando una forma confiable de convertir Base64 utilizando las bibliotecas nativas por días. ¡Gracias! – bradreaves

Cuestiones relacionadas