Question

J'ai un programme que le texte des entrées et trie à l'aide d'un certain nombre de fonctions et le texte doit être lisible quel que soit le format, cependant, quand un fichier enregistré sur le codage ASCII étendu est importé, des caractères plus de 127 sont ignorés . En regardant autour, je ne peux pas l'impression de voir comment surmonter cela. Les fichiers sont lus bien en UTF-8 et Unicode. J'ai essayé de convertir les chaînes en UTF-8, mais les lettres en question encore juste venu comme point d'interrogation comme des formes au lieu. Je peux voir que les valeurs sont correctes. 0xBF û, mais ils ne sont pas en tant que valeur interprété

Aide Quelqu'un peut-moi ici, je n'ai pas fait beaucoup de travail avec ce genre de chose auparavant. Je travaille en C # si cela aide.

Mon code actuel pour convertir ressemble à ceci:

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

sd est la chaîne. Quand j'importer cette chaîne, je ne spécifie pas le codage de texte:

string input = File.ReadAllText(fname);
...
parser(input);
Était-ce utile?

La solution

Je peux voir que les valeurs sont correctes: 0xBF pour û

Cela ne veut pas le codage UTF-8 pour û, ce serait une séquence de deux octets, 0xC3 + 0xBB. Il est clair que vous l'aurez deviné le fichier Un mauvais encodage. Le codage de ce caractère dans la page de code Windows 1252, commun en Europe occidentale et dans les Amériques est 0xFB. Commun au Royaume-Uni, ainsi, votre pays de résidence. Avez-vous inversez les chiffres?

Utilisez Encoding.Default à la place.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top