C sharp - Encoding string utf8

 
Vista:
sin imagen de perfil
Val: 5
Ha aumentado su posición en 5 puestos en C sharp (en relación al último mes)
Gráfica de C sharp

Encoding string utf8

Publicado por Oscar (5 intervenciones) el 14/08/2020 15:00:38
Hola. Necesitaria ayuda con lo siguiente . Necesito leer un fichero pdf y despues de realizar la lectura de los bytes y almacenarlo en un array de bytes, almacenarlo en una string con Encoding UTF8. El probñema es que o se porque razón, el resultado de almacenarlo en el String se trunca en una parte de la cadena del resultado y no escribe mas en la variable String utf8 y no se el motivo de porque ocurre esto.
Os pongo como lo he implementado:

1
2
3
String filetoexport = "C:\\file.pdf";
byte[] bytes =  System.IO.File.ReadAllBytes(filetoexport);
String utf8 = Encoding.UTF8.GetString(bytes);

He probado a leer el fichero pdf y almacenarlo en un txt la codificación, y en el fichero.txt si lo escribe correctamente todo el contenido.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
using (StreamReader sr = new StreamReader(@"C:\\file.pdf"))
{
    var stream = new MemoryStream();
    using (StreamWriter sw = new StreamWriter((@"C:\\output.txt")))
    {
        while (!sr.EndOfStream)
        {
            string line = sr.ReadLine();
            sw.WriteLine(line);
            sw.Flush();
        }
        String s = sw.ToString();
    }
 
}

Por lo que no entiendo el porque en la variable String haciendo un Encoding a UTF8 , no lo guarda todo el contenido. Entiendo que puede ser algún caracter que no lo interpreta o no lo se.
Me gustaria si alguien pudiera ayudarme se lo agradecería.
Un saludo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Wilfredo Patricio Castillo
Val: 707
Oro
Ha mantenido su posición en C sharp (en relación al último mes)
Gráfica de C sharp

Encoding string utf8

Publicado por Wilfredo Patricio Castillo (416 intervenciones) el 14/08/2020 17:52:55
Algo elemental a tener en cuenta y razonarlo, si tengo un array de datos, dónde lo debo meter?, en una cadena o en un array de cadenas?.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Encoding string utf8

Publicado por Oscar (5 intervenciones) el 14/08/2020 18:11:41
Perdona, pero no entiendo lo q m preguntas. No entiendo el pq tengo q meterlo en un array de cadena, ya q lo q yo quiero es meter el conjunto dl contenido dl fichero en un String
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Encoding string utf8

Publicado por Nacho (115 intervenciones) el 14/08/2020 23:58:50
En un pdf no hay sólo información de texto. GetString(bytes); saca un string, y un string acaba cuando hay un 0, así que si en el pdf hay un 0 ahí parará. ReadLine lee hasta un salto de línea, no porque haya un 0.

Usa otro método para sacar el texto de lo array de bytes.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Encoding string utf8

Publicado por Oscar (5 intervenciones) el 15/08/2020 09:42:35
Hola. Gracias por la respuesta, pero es la primera vez que oigo que un string acaba cuando hay un cero. Es mas, observando el contenido dl string en el q guardo el array d bytes con getstring(bytes), deja de escribir cuando despues de (espacio....... Es decir, q si yo en vez d guardarlo en un string lo guardo en un. Txt lo guarda correctamente todo. Y si edito ese. Txt, quito ese espacio despues dl parentesis y lo vuelvo a poner, lo guardo y lo leo y hago un getstring de nuevo, entonces si almacena en el string todo el contenido, por lo q no entiendo pq de primeras no lo hace
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar