Написание исходного кода c # в файлы - PullRequest
4 голосов
/ 25 марта 2009

У меня тупая проблема. Я читаю некоторые файлы .cs с диска. Выполнение большого количества регулярных выражений и других операций с ними с помощью программы .net, которую я сделал. Затем запишите их обратно на диск.

Полученные файлы получают неправильную кодировку. В какой кодировке находятся исходные файлы c #? И затем есть первая вещь порядка байтов, это необходимо? Это написано, когда я использую File.WriteAllText ()?

Программа, изменяющая файлы, представляет собой простое приложение .net, а код просто

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

В файлах c # есть комментарии и строки, которые не являются частью стандартной кодовой страницы.

Один из проблемных символов - "ä"

Решение:

похоже, это работает правильно

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));

Ответы [ 3 ]

2 голосов
/ 03 ноября 2009

System.IO.File.ReadAllText(fn) пытается угадать кодировку входного файла. Это может пойти ужасно неправильно.

Visual Studio 2008 создает файлы по умолчанию в UTF-8. Точно так же вы должны попытаться использовать UTF-8, где это возможно, указав Encoding.UTF8Encoding при записи файлов на диск.

1 голос
/ 25 марта 2009

По умолчанию файлы должны быть закодированы с той же кодовой страницей, которая задана в региональных настройках аппарата. По умолчанию это будет «Юникод (UTF-8 с подписью) - кодовая страница 65001», вы можете использовать любую кодовую страницу, которую хотите, например, вы также можете использовать «Западноевропейский (windows) - кодовая страница 1252».

0 голосов
/ 25 марта 2009

Я написал несколько кодов в свое время и всегда использовал кодировку ASCII (простой текст Windows). На каком языке вы используете операции регулярного выражения для файлов CS?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...