Pregunta

Tengo un programa que ingresa el texto y lo clasifica utilizando una serie de funciones y el texto debe ser legible independientemente del formato, sin embargo, cuando se importa un archivo guardado en la codificación ASCII extendida, se ignora cualquier caracteres de más de 127. Mirando a su alrededor, parece que no puedo ver cómo superar esto. Los archivos se leen bien en UTF-8 y Unicode. He intentado convertir las cuerdas a UTF-8, pero las cartas en cuestión todavía aparecen como formas de marca como formas. Puedo ver que los valores son correctos: 0xbf para û, pero no se están interpretando como valor.

¿Alguien puede ayudarme aquí? No he trabajado mucho con este tipo de cosas antes. Estoy trabajando en C# si eso ayuda.

Mi código actual para convertir se ve así:

System.Text.UTF8Encoding u = new System.Text.UTF8Encoding();
byte[] asciiBytes = Encoding.UTF8.GetBytes(sd);
sd = u.GetString(asciiBytes);

Dónde sd es la cadena. Cuando importo esta cadena, no especifico la codificación de texto:

string input = File.ReadAllText(fname);
...
parser(input);
¿Fue útil?

Solución

Puedo ver que los valores son correctos: 0xbf para û

Esa no es la codificación UTF-8 para û, eso sería una secuencia de dos bytes, 0xc3 + 0xbb. Claramente, adivinó el archivo que codifica mal. La codificación de ese personaje en el código de Windows Página 1252, común en Europa occidental y América es 0xFB. Común en el Reino Unido también, su país de residencia. ¿Revertiste los dígitos?

Use codificación.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top