Estoy trabajando en un poco de Streamserve proyecto (en google :P) donde puedo conseguir algunos codificado en Base64 contenido. He tratado de decodificar la cadena base64 con múltiples decodificadores y devolver el resultado correcto.. excepto el Base64DecodeString método en Streamserve.

La cadena codificada que es: ‘VABlAHMAdABpAG4AZwAgAGIAYQBzAGUAnga0aa==» El resultado esperado es: ‘Pruebas base64’

Sin embargo, dentro de Streamserve el resultado es: ‘Tsig ae4’

Que simplemente se salta todos los demás de la carta. Ahora sé que la mayoría de la gente no conoce Streamserve, pero tengo un presentimiento de que esto podría ser un problema de codificación de caracteres.. problema y estaba esperando que alguien tiene una idea de lo que podría estar pasando aquí.

Puedo sin ningún problema codificar/decodificar cadenas de texto dentro de streamserve.. no sólo las cadenas que me recibe como entrada

  • En realidad, esa cadena decodifica como T�e�s�t�i�n�g� �b�a�s�e�6�4� en «adecuada» UTF-8. Estoy asumiendo que está codificado en UTF-16 sistema.
InformationsquelleAutor Herter | 2011-12-01

2 Comentarios

  1. 6

    El problema es que la codificación en UTF-16 y decodificación de vuelta a ASCII o UTF-8. Cambiar la cadena de codificación en utf-8 antes de la codificación de la cadena en base64 y debería funcionar bien.

    Aquí está el volcado hexadecimal de que base64 blob:

    54 00 65 00 73 00 74 00 69 00 6e 00 67 00 20 00 62 00 61 00 73 00 65 00 36 00 34 00
    

    Si se quita la bytes nulos, se obtiene esto:

    54 65 73 74 69 6e 67 20 62 61 73 65 36 34
    

    Que se traduce en el siguiente texto ASCII:

    Testing base64
    
    • Hola.. He intentado lo que dijo. En java hice esto: Base64.encodeBase64String(de contenido.getBytes(«UTF-8»)); Pero no ha cambiado nada 🙁
    • Tratar de «ISO-8859-1» en su lugar.
    • parece que no hay diferencia.. puedo obtener los mismos resultados sin importar qué conjunto de caracteres que yo elija. También me he dado cuenta de que el salto de línea en el archivo generado no trabajo en el bloc de notas. Yo también realmente necesita para conseguir que el trabajo..
    • Impar. Supongo que se podría utilizar un bucle para producir una nueva matriz con todos los no-cero bytes…
    • La nueva línea de emisión en el Bloc de notas es sólo porque usted está utilizando el estilo de Unix \n saltos de línea en lugar de la de estilo de Windows \r\n.
    • Yo tengo trabajo.. resulta que yo puede establecer que charset quiero usar a la hora de descodificar. La configuración es la misma cuando la codificación de las obras (que sabía ;P) anyhoo.. gracias por la ayuda! 🙂

  2. 4

    El resultado de la decodificación base64 es binario de datos (y también de la entrada cuando codificación es datos binarios). Para ir de datos binarios a una cadena o viceversa, se necesita aplicar una codificación como UTF-8 o UTF-16. Usted necesita saber que la codificación de Streamserve está utilizando, y utilizar la misma codificación al convertir sus datos de texto para datos binarios para empezar, antes de base64-la codificación de los mismos.

    Parece que podría desea usar la codificación UTF-16 para codificar el texto para empezar, aunque en ese caso me sorprende que no acaba de llegar basura… se ve como es en realidad ignorando cada byte otro en el decodificado base64, en lugar de tomarlo como el byte alto en un código UTF-16 unidad.

    • también gracias a ti por tu respuesta 🙂

Dejar respuesta

Please enter your comment!
Please enter your name here