with org img images how data convert codebeautify base64 java

org - set image base64 html



Decodificación en base64 usando solo JDK6 (3)

Al igual que Joachim Sauer dijo en un comentario anterior, JDK1.6 ya viene con su propia implementación Base64 (sun.misc. *), Aquí hay un ejemplo:

String toEncode = "Encoding and Decoding in Base64 Test"; //Encoding in b64 String encoded = new BASE64Encoder().encode(toEncode.getBytes()); System.out.println(encoded); //Decoding in b64 byte[] decodeResult = new BASE64Decoder().decodeBuffer(encoded); System.out.println(new String(decodeResult));

Esta pregunta con respecto a JDK 5 dice que no hay implementación provista con JDK 5, pero se supone que JDK 6 tiene un sun.misc.Base64Decoder .

Por lo que sé, esta clase no está provista con el JDK y no pude encontrar ninguna otra clase similar en él.

Entonces, ¿cómo es la situación con JDK6?

Soy consciente de las numerosas implementaciones que existen, como las de Commons y JBoss, pero tenemos una política restrictiva de liberación de terceros, por lo que estoy tratando de evitar reinventar la rueda.


Hay implementaciones oficiales (no sun.misc ) en Java, pero no es donde nadie debería estar.

java.util.prefs.AbstractPreferences es la que tiene los métodos necesarios para hacerlo. Tienes que anular el método de put .

Y una más que es mucho más fácil de usar:

javax.xml.bind.DatatypeConverter tiene 2 métodos de interés:

Aclaración de la naturaleza base64 de AbstractPreferences: java.util.prefs.Preferences

/** * Associates a string representing the specified byte array with the * specified key in this preference node. The associated string is * the Base64 encoding of the byte array, as defined in RFC 2045, Section 6.8, * with one minor change: the string will consist solely of characters * from the Base64 Alphabet; it will not contain any newline * characters. Note that the maximum length of the byte array is limited * to three quarters of MAX_VALUE_LENGTH so that the length * of the Base64 encoded String does not exceed MAX_VALUE_LENGTH. * This method is intended for use in conjunction with * {@link #getByteArray}. */ public abstract void putByteArray(String key, byte[] value);


No, la situación no cambió entre Java 5 y Java 6.

Desafortunadamente, no hay una implementación oficial de Base64 en la plataforma Java SE. @bestsss ha demostrado que en realidad hay una implementación Base64 (bien oculta) en Java SE 6 (vea su respuesta para más detalles).

El Sun JDK se envía con esta clase ( sun.misc.Base64Decoder ), pero no se especifica y no debe utilizarse (especialmente porque no se requiere que exista en otras implementaciones o incluso en versiones).

Si absolutamente necesita evitar bibliotecas de terceros ( Apache Commons Codec sería el proveedor tradicional de una implementación Base64 ), entonces es posible que desee copiar una versión BSD (o similar) en su proyecto. Hay una implementación de dominio público y eso es tan fácil como se hace, cuando se trata de licencias.