Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
9 / 9 / 0
Регистрация: 08.04.2021
Сообщений: 297

Кодировка при записи в файл

23.09.2023, 14:00. Показов 565. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток!
На консоль выходит нормально, а в файл пишет крокозябры. Пробовал указать разный Encoding, не помогает. В чём тут дело?

Код:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
using System.Text;
 
#pragma warning disable CS7022 // Точкой входа программы является глобальный код; игнорируется точка входа
internal class Program
{
    static void Main(string[] args)
    {
        object obj = new();
 
        string name = Environment.UserName;
 
        List<KeyValuePair<string, string>> matchedFiles = new List<KeyValuePair<string, string>>(); // коллекция содержащая ключ-значение коллекцию
 
        string[] files = File.ReadAllLines(@"C:\Users\UserName\Desktop\445+447dom\log-3.txt", Encoding.Default);
 
        string[] arrayFKB = File.ReadAllLines(@"C:\Users\UserName\Desktop\archive23-08-07\ФКБ\arrayFKB.txt", Encoding.Default);
 
        #region Последовательный поиск совпадений файлов 
        foreach (string file in files)
        {
            foreach (string fkb in arrayFKB)
            {
                if (file.IndexOf(fkb) > 0)
                {
                    matchedFiles.Add(new KeyValuePair<string, string>(fkb, file)); // добавляем все совпадения в имени файлов (ключ - строка из arrayFKB.txt, значение - строка из log.txt)
                }
            }
        }
        #endregion
 
        #region Параллельный поиск совпадений файлов (если слишком много файлов и критериев поиска)
        //Parallel.ForEach(files, (file) =>
        //{
        //    Parallel.ForEach(arrayFKB, (fkb) =>
        //    {
        //        if (file.IndexOf(fkb) > 0)
        //        {
        //            lock (obj)
        //            {
        //                matchedFiles.Add(new KeyValuePair<string, string>(fkb, file)); // добавляем все совпадения в имени файлов
        //            }
        //        }
        //    });
        //});
        #endregion
 
        for (int i = matchedFiles.Count - 1; i >= 0; i--) // KeyValuePair<string, string> item in keyValues)// Пара ключ-значение<строка, string> элемент в ключевых значениях)
        {
            try
            {
                DateTime.TryParse(matchedFiles[i].Value.Split(',')[1].Trim(), out DateTime dateTime); // разделяем по знаку ',' и преобразуем второе значение в дату
 
                if (dateTime.Date != DateTime.Today.Date)
                {
 
                    matchedFiles.RemoveAt(i); // сравниваем даты, при несовпадении удаляем
                }
            }
            catch { continue; }
        }
 
        List<KeyValuePair<string, string>> folders = matchedFiles.DistinctBy(x => x.Key).ToList(); // удаляем повторы по ключу
        Console.WriteLine("Папки ФКБ всего:");
 
        foreach (var item in matchedFiles)
        {
            Console.WriteLine(item.Key);
            Console.WriteLine(item.Value);
        }
        Console.WriteLine();
        Console.WriteLine();
        Console.WriteLine("Папки ФКБ за cегодня:");
 
        foreach (var item in folders)
        {
            Console.WriteLine(item.Key);
            Console.WriteLine(item.Value);
        }
        Console.WriteLine("\n" + name + ": " + "количество папок ФКБ всего - " + matchedFiles.Count + "шт. Из них созданы " + DateTime.Now.ToLongDateString() + " - " + folders.Count + "шт.");
        {//использование метода WriteAllText (StreamWriter тоже выдает крокозябры) для записи текста в файл:
            string path = (@"C:\Users\UserName\Desktop\445+447dom\logExit.txt");
            if (!File.Exists(path))
            {
                string createText = "Привет, " + Environment.UserName + Environment.NewLine;
                File.WriteAllText(path, createText, Encoding.UTF8);
                string appendText = ($"\tДата записи: " + DateTime.Now.ToLongDateString()) + Environment.NewLine;
                string appendText2 = ("\n" + name + ": " + "количество папок ФКБ всего - " + matchedFiles.Count + "шт. Из них созданы " + DateTime.Now.ToLongDateString() + " - " + folders.Count + "шт.") + Environment.NewLine;
                File.AppendAllText(path, appendText + appendText2, Encoding.UTF8);
            }
            {//Откроем файл для чтения, а там крокозябры !!! :
                System.Diagnostics.Process txt = new System.Diagnostics.Process();
                txt.StartInfo.FileName = "notepad.exe";
                txt.StartInfo.Arguments = @"C:\Users\UserName\Desktop\445+447dom\logExit.txt";
                txt.Start();
            }
            Console.WriteLine();
 
        }
    }
}
 
#pragma warning restore CS7022 // Точкой входа программы является глобальный код; игнорируется точка входа
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.09.2023, 14:00
Ответы с готовыми решениями:

Кодировка при записи в файл
Проблема немогу записать в файл русский текст, файл создаю на рабочем столе вот код StreamWriter cw =...

Неверная кодировка при записи в файл
Пишу программу, которая данные из формы заносит в dbf-файл по нажатию кнопки. Код кнопки такой такой: str = textBox1.Text; ...

Кодировка символов при записи и выводе в файл
Помогите пытаюсь считать и записать в список значения. Входной вектор состоит из 0 и 1. int i = 0; try ...

2
fly
 Аватар для I can
4952 / 4636 / 844
Регистрация: 13.04.2015
Сообщений: 9,831
23.09.2023, 14:50
Лучший ответ Сообщение было отмечено ooos как решение

Решение

Цитата Сообщение от ooos Посмотреть сообщение
Encoding.Default
А что мешает и при записи и при чтении использовать одинаковую кодировку Encoding.UTF8 ?
0
9 / 9 / 0
Регистрация: 08.04.2021
Сообщений: 297
23.09.2023, 17:50  [ТС]
Спасибо, I can!
Ставил одинаковую кодировку, не помогало....
Оказывается причина была в том что .txt файлы у меня открывались в AkelPad, который я снёс и... о чудо!
в обычном блокноте всё как положено стало отображаться.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.09.2023, 17:50
Помогаю со студенческими работами здесь

Страдает кодировка при записи в бд
Разбиваю строку символов кирилицы на массив и записываю в таблицу. // Запись тегов ...

Неверная кодировка при записи в файл
Написал Windows Forms приложение на C# Но имеется проблема с кодировкой. Нужно чтобы русские символы тоже сохранял. Не знаю как...

Неверная кодировка при записи в БД
В базе данных стоит тип данных nvarchar(200), если записать кирилицу прямо через Management Studio русские буквы работают как нужно, когда...

Кодировка при записи в таблицу.
Привет всем. При попытке через web-интерфейс запихнуть в таблицу фокса русские буквы при помощи ADODB.Recordset, кодировка информации...

Кодировка при записи в файл
Здравствуйте. Помогите, пожалуйста, потому что то ли лыжи не едут, то ли со мной что-то не так. Имеется блочный алгоритм шифрования,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru