Угу, насчет .NET согласен.
Вот так можно без промежуточных файлов работать с UTF8
X++:
{
System.Text.UTF8Encoding UTF8Encoding;
System.Byte[] bytes;
System.Byte[] utf8;
int i;
int len;
int val;
Binary bin;
;
UTF8Encoding = new System.Text.UTF8Encoding();
bytes = UTF8Encoding.GetBytes("Строка UTF8");
len = bytes.get_Length();
bin = new Binary(len);
for (i=0;i<len;i++)
{
val = bytes.GetValue(i);
bin.byte(i, val);
}
info(bin.string(0));
utf8 = new System.Byte[len]();
for (i=0;i<len;i++)
utf8.SetValue(System.Convert::ToByte(bin.byte(i)), i);
info(UTF8Encoding.GetString(utf8));
}
По сути вопроса - возможно, проблемы из-за того, что строки теперь юникодные и преобразование на каком-то этапе идет неправильно.