2012-01-30 11 views
8

En la compañía que trabajo, tenemos clase para convertir desde y hacia la cadena Base64. Cuando vi el código por primera vez, pregunté por qué no utilizas el Convert.ToBase64String que viene con .NET.¿Base64 está estandarizado?

Luego modifiqué el cuerpo del método para simplemente llamar a Convert.ToBase64String, pero no genera la misma cadena.

Intenté usar ASCII, UTF8, Unicode y UTF32.

No recuerdo exactamente, pero creo que ASCII genera una cadena con la misma longitud pero algunos caracteres diferentes, y otros Enconding genera cadenas más grandes.

Tal vez nuestra implementación fue incorrecta, pero encontré una implementación de JavaScript que coincide con la nuestra.

Isn't Base64 portable?

Editar: He encontrado esto en Wikipedia, pero yo no sé si fue la causa http://en.wikipedia.org/wiki/Base64#Implementations_and_history

Edit2: he mencionado codificaciones porque estamos convertir una cadena a otra. Entonces necesito convertir primero mi cadena original a una matriz de bytes usando alguna codificación

+0

pensé que era, así que estoy viendo esto con interés. – Archer

+0

Es, parece que tal vez están usando una implementación personalizada por alguna razón. http://tools.ietf.org/html/rfc4648 – Will

+4

La conversión de una secuencia de bytes a una cadena Base64 no implica ASCII, UTF-8 o Unicode. – dtb

Respuesta

10

RFC 3548. ¡No, espera! Hay uno más nuevo: RFC 4648. (Gracias dtb!)

Por cierto, parece que está mezclando base64, que convierte cualquier flujo binario en una secuencia ASCII y codificaciones de caracteres, que son conceptos totalmente diferentes. Es posible que desee leer this introduction article sobre codificaciones.

+5

Obsoleted by: 4648 – dtb