Я использую небольшой инструмент, который выполняет анализ сети и сбор данных, но нестабилен из-за своей природы, используя SharpPCap. Основа этого инструмента написана не мной (я отредактировал его в соответствии со своими потребностями), вместо этого я должен был построить свое приложение на нем, чтобы оно работало.
В настоящее время одной большой проблемой, с которой я сталкиваюсь, является кодировка UTF-8.
Процесс, фактически выполняющий работу, запускается Main-Process
Process WorkerProc = new Process();
WorkerProc.StartInfo.UseShellExecute = false;
WorkerProc.StartInfo.FileName = @"Worker.exe";
WorkerProc.StartInfo.RedirectStandardOutput = true;
WorkerProc.StartInfo.Arguments = Argument;
WorkerProc.StartInfo.StandardOutputEncoding = Encoding.UTF8;
WorkerProc.StartInfo.StandardErrorEncoding = Encoding.UTF8;
WorkerProc.StartInfo.WindowStyle = ProcessWindowStyle.Normal;
WorkerProc.OutputDataReceived += OnOutputDataReceived;
WorkerProc.Start();
WorkerProc.BeginOutputReadLine();
Этот процесс позже записывает свои Данные, используя Console.WriteLine (StuffandThings), который перенаправляется в Main-Process.
Есть ли лучший способ сделать это, чем использовать Console.WriteLine? Я подумал, что это, вероятно, неправильно, но я не знаю лучшего способа.
Данные, которые получает рабочий процесс, для начала кодируются в UTF-8 (он также записывает их в локальный файл журнала, который работает нормально).
Вот как я записываю данные в основной процесс
var utf8 = Encoding.UTF8;
byte[] utfBytes = utf8.GetBytes(INPUT);
string message = utf8.GetString(utfBytes, 0, utfBytes.Length);
Console.WriteLine(message);
Ошибка должна быть где-то здесь, но я просто не знаю, что это такое.
Основной процесс отображает данные в консоли, а также отправляет их на сервер журналов с помощью Log4Net.
Как я могу убедиться, что данные все еще в кодировке UTF-8?
Есть ли лучший способ, чем Console.WriteLine ()?
Спасибо!