Невозможно записать файлы в кодировке Windows-1252, вместо этого получите UTF-8 - PullRequest
0 голосов
/ 24 мая 2018

Это сводит меня с ума.Я хочу прочитать несколько текстовых файлов (расположенных за пределами каталога моего проекта), закодированных с помощью Windows-1252, отредактировать их как строки и записать обратно в эти файлы, снова как Windows-1252.Тем не менее Visual Studio вместо этого продолжает производить файлы UTF-8.

Вот мой код чтения файлов:

using (StreamReader sr = new StreamReader(fileName, Encoding.Default))
{
    String s = sr.ReadToEnd();
    return s;
}

Вот мой код записи файлов:

File.WriteAllText(fileName, joinedFileString, Encoding.Default);

Inмежду ними я выполняю различные правки, в том числе добавление, удаление и удаление разрывов строк, но я предполагал, что они будут решены в правильной кодировке, указав кодировку в File.WriteAllText.Обратите внимание, что я в дополнительных параметрах сохранения Visual Studio изменил кодировку по умолчанию на 1252. Поэтому Encoding.Default должен ссылаться на правильный.

И все же он продолжает превращать файлы в UTF-8!: - (

1 Ответ

0 голосов
/ 24 мая 2018

Вы хотите указать кодировку, которую вы используете более явно.Encoding.Default может варьироваться от системы к системе и в соответствии с документацией ,

кодировка по умолчанию может даже меняться на одном компьютере.

Поскольку вы знаете, какую кодировку вы хотите, вы можете указать ее конкретно с помощью Encoding.GetEncoding(1252)

В некоторых средах вам может потребоваться зарегистрировать поставщика для доступных кодировок.Вы можете сделать это, добавив пакет System.Text.Encoding.CodePages nuget в свой проект и зарегистрировав его с помощью Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);

...