Есть массив байтов byte[] buffer, я считываю его в строку и преобразую в base64
string chunk = Convert.ToBase64String(buffer);
После я передаю ее в powershell-скрипт на С#, где декодирую обратно и записываю в файл эту строку
$DataDecoded = [System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String('Chunk'))
Invoke-Command {$using:DataDecoded | Add-Content -Path C:\Test\Script1.ps1 -NoNewLine} -ComputerName " + configuration.Ip + @" -Credential $Cred
В итоге таких циклов может быть несколько пока копирую файл кусками, и на выходе получаю файл где в самом начале первой строки стоит знак вопроса '?' Больше нигде нет, если меняю кодировку в строке на ASCII то появляется три знака вопроса '???'
Я так понимаю, это BOM. Мне конечно нужен файл без этих знаков вопроса...возможно как-то его убрать? я уже перепробовал все варианты с этими кодировками
BOM (byte order mark) существует в файле. Вот и нужно решать проблему при чтении из файла!
Наверняка вы читаете массив байтов из файла следующим образом:
var bytes = File.ReadAllBytes(path);
Естественно, если в файле присутствует BOM, то эти байты попадают в массив.
Поэтому прочитайте данные из файла именно как текст, при этом BOM будет устранена. Далее из текста получите байты в нужной кодировке.
var text = File.ReadAllText(path);
var bytes = Encoding.UTF8.GetBytes(text);
Например так:
if (String1.StartsWith(Encoding.UTF8.GetString(Encoding.UTF8.GetPreamble()), StringComparison.Ordinal)) {
String2 = String1.Remove(0, Encoding.UTF8.GetString(Encoding.UTF8.GetPreamble()).Length);
}
Можно в лоб, по проще:
String1.Trim(new char[]{'\uFEFF'});
или так чтоб ещё убрать пробел между BOM и текстом:
String1.Trim(new char[]{'\uFEFF','\u200B'});
Я удалил символы отвечающие за BOM, только уже с base64 конвертированной строки. У меня получилось вот так:
fileChunk = fileChunk.Replace("77u/", "");
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости