2009-03-25 4 views
4

J'ai un problème stupide. Je lis des fichiers .cs à partir du disque. Faire beaucoup d'opérations regex et d'autres avec un programme .net que j'ai fait. Ensuite, écrivez-les sur le disque.Écriture du code source C# dans les fichiers

Les fichiers résultants sont mal codés. Quel encodage sont les fichiers source C#? Et puis il y a la première chose d'ordre des octets, est-ce nécessaire? Est-il écrit quand j'utilise File.WriteAllText()?

Le programme changeant les fichiers est une simple application .net, et le code est tout simplement

 string text = System.IO.File.ReadAllText(fn); 
     string newText = Regex.Replace(text, regexStr, replaceStr); 
     System.IO.File.WriteAllText(fn, newText); 

Les fichiers C# ont des commentaires et les chaînes ne semblent pas faire partie de la page de code standard.

L'un des personnages problématiques est une ""

Solution:

cela semble fonctionner correctement

 string text = System.IO.File.ReadAllText(fn, Encoding.GetEncoding(1252)); 
     string newText = Regex.Replace(text, regexStr, replaceStr); 
     System.IO.File.WriteAllText(fn, newText, Encoding.GetEncoding(1252)); 
+0

Comment ouvrez-vous les fichiers? – Bravax

Répondre

0

J'ai écrit quelques gens de code dans mon temps et toujours encodage ASCII utilisé (texte en clair). Quelle langue utilisez-vous pour faire les opérations regex sur les fichiers CS?

1

Par défaut, les fichiers doivent être codés avec la même page de codes que celle définie dans les paramètres régionaux de la machine. Par défaut, ce sera 'Unicode (UTF-8 avec signature) - Codepage 65001' vous pouvez utiliser n'importe quelle page de code que vous souhaitez, par exemple vous pouvez également utiliser 'Western Europe (windows) - Codepage 1252'.

2

System.IO.File.ReadAllText(fn) essaie de deviner le codage du fichier d'entrée. Cela peut aller horriblement mal. Visual Studio 2008 crée des fichiers par défaut en UTF-8. De même, vous devriez essayer d'utiliser UTF-8 lorsque cela est possible, en spécifiant Encoding.UTF8Encoding lors de l'écriture des fichiers sur le disque.

Questions connexes