Convertir valores de ASCII/ANSI extendidos
-
27-10-2019 - |
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);
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.