Estoy usando un proyecto .NET core 3.0 en Windows 10. Estoy tratando de codificar una cadena a base64 con el siguiente código:

var stringvalue = "Row1" + Environment.NewLine + "\n\n" + "Row2";
var encodedString = Convert.ToBase64String(Encoding.UTF8.GetBytes(stringvalue));

EncodedString tiene el siguiente resultado:

Um93MQ0KCgpSb3cy

Stringvalue es:

Row1\r\n\n\nRow2

Sin embargo, si estoy pasando el mismo valor a este sitio ( https://www.base64encode.org/), obtengo otro resultado:

Um93MVxyXG5cblxuUm93Mg==

enter image description here

En Visual Studio, intenté volver a guardar el archivo con terminaciones de línea de Unix, pero sin suerte: ingrese la descripción de la imagen aquí

Quiero que la cadena se codifique como se hace en https://www.base64encode.org. ¿Alguna idea de cómo hacer esto?

1
Chris111 2 dic. 2019 a las 19:40

2 respuestas

La mejor respuesta

De la captura de pantalla, puedo ver que ha ingresado una cadena diferente de la cadena que utilizó en su código C #. La cadena que usó en https://www.base64encode.org se representa como un literal de cadena C # como este:

"Row1\\r\\n\n\\nRow2"
// or
@"Row1\r\n\n\nRow2"

Entonces para responder a su pregunta:

Quiero que la cadena se codifique como se hace en https://www.base64encode.org. ¿Alguna idea de cómo hacer esto?

Deberías hacer:

var encodedString = Convert.ToBase64String(Encoding.UTF8.GetBytes("Row1\\r\\n\n\\nRow2"));

Pero eso probablemente no sea lo que realmente quieres. Es más probable que desee su primer intento con el código C # porque ese es en realidad un carácter de retorno de carro, seguido de 3 caracteres de línea nuevos. La cadena que ingresó en https://www.base64encode.org es simplemente el carácter de barra diagonal inversa seguido de la letra r (o n)

Realmente no puede hacer que la salida en https://www.base64encode.org coincida con la salida de C #, porque solo puede elegir un tipo de separador de línea allí. Solo puede codificar Row1\r\n\r\n\r\nRow2 o Row\n\n\nRow2. Sin embargo, puede verificar que el resultado de C # sea correcto decodificando la salida usando https://www.base64decode.org .

2
Sweeper 2 dic. 2019 a las 16:50

El \r\n se codificará en el sitio web, esto no es una nueva línea, estos son 4 caracteres. Existe esta casilla de verificación separador de nueva línea, para decir que desea que el estilo de Windows, convierta su valor de entrada del mundo real:

Row1

Row2.

Supongo que tu \ r \ n \ n \ n es solo un error, el sitio web está preparado para convertirlo solo a \ r \ n \ r \ n.

0
Holger 2 dic. 2019 a las 16:48