2010-05-27 5 views
0

J'ai un fichier journal qui contient le demi-caractère ½, j'ai besoin de traiter ce fichier journal et de réécrire certaines lignes dans un nouveau fichier, qui contient ce caractère. Cependant, lorsque j'écris le fichier, les caractères apparaissent incorrectement dans le bloc-notes.Comment conserver un codage de caractères similaire

Je sais que c'est une sorte de problème d'encodage, et je ne suis pas sûr que ce soit juste que les fichiers que j'écris ne contiennent pas le bon nom ou quoi.

J'ai essayé de lire et d'écrire le fichier avec toutes les options de codage disponibles dans l'énumération Encoding.

J'utilise ce code:

string line; 

// Note i've used every version of the Encoding enumeration 
using (StreamReader sr = new StreamReader(file, Encoding.Unicode)) 
using (StreamWRiter sw = new StreamWriter(newfile, false, Encoding.Unicode)) 
{ 
    while ((line = sr.ReadLine()) != null) 
    { 
     // process code, I do not alter the lines, they are copied verbatim 
     // but i do not write every line that i read. 

     sw.WriteLine(line); 
    } 
} 

Quand je regarde le journal original dans le bloc-notes, le caractère moitié affiche correctement. Quand je regarde le nouveau fichier, ce n'est pas le cas. Cela me dit que le problème n'est pas que le bloc-notes puisse afficher le caractère, car cela fonctionne dans l'original.

Quelqu'un peut-il m'aider à résoudre ce problème?

+0

L'encodage n'est pas une énumération - mais il existe de nombreuses propriétés statiques. Avez-vous essayé Encoding.Default? Cela et Encoding.UTF8 sont les options les plus probables. –

+0

Le fichier d'origine est-il en Unicode? –

+0

Lire les commentaires. Je les ai tous essayés, y compris par défaut. –

Répondre

0

La solution était PEBKAC.

Je modifiais les encodages dans une partie différente du programme qui ne créait pas ces fichiers. Lorsque j'ai changé les fichiers corrects, en utilisant Encoding.Default, il s'affiche correctement.

Merci Jon et autres.