Я использую задачи сценария C # в SSIS для вывода символов ASCII. Я делаю это, потому что я создаю файл с упакованными полями, упакованное поле занимает две цифры в каждом байте, используя нотацию, называемую Binary Coded Decimal.
Итак, я обнаружил, что при выводе NUL (0x00) [Dec 0] с помощью Œ (0x8C) [Dec. 140] он добавляет дополнительный символ  (0xC2) между ними. Я не могу понять, почему это происходит. У кого-нибудь есть какие-либо идеи? Пожалуйста, смотрите мой код ниже:
string fileName;
System.IO.StreamWriter writer;
public override void PreExecute()
{
base.PreExecute();
this.fileName = this.Variables.FilePath;
}
public override void PostExecute()
{
base.PostExecute();
writer.Flush();
writer.Close();
}
public override void Input0_ProcessInputRow(Input0Buffer Row)
{
writer.Write((char)00);
writer.Write((char)140);
writer.Write((char)13);
writer.Write((char)10);
}
Вывод ниже:
![ExtraCharacter](https://i.stack.imgur.com/iibqF.png)
UPDATE
Одна вещь, на которую я не обращал внимания, это то, что я передаю шестнадцатеричные значения в скрипт C #, а затем записываю символы, представленные шестнадцатеричным значением, в файл со столбцами фиксированной длины.
Я не знаю, имеет ли это значение, но я также буду записывать в файл другие вещи, которые не являются упакованными значениями в тех же строках, что и упакованные значения, и, следовательно, причиной использования StreamWriter.