Добрый день!
Необходимо из Аксапты 3.0 SP3 выгружать csv файлы в UTF-8 кодировки.
1. Попробовал
решение AndyD - в некоторых строках появились
дополнительные кракозябры
2. Скачал
внешний кодировщик , вызываю его кодом:
X++:
void encodeFile(str _path)
{
;
WinAPI::shellExecute("recode", strFmt("-f cp1251...utf-8 %1", _path));
}
Файл кодируется в utf-8, но есть один недостаток - когда отрываю Notepad++ кодировка файла отображается как 'Ansi as UTF-8', и если в том же Notepad++ перекодировать файл в UTF-8 то размер файла изменится на 3 байта, как я понимаю - это в начало файла добавится BOM-символ.
Т.е. мой кодировщик recode кодирует в utf8_without_bom, а заказчику нужен чистый utf-8 c этим BOM-символом.
3. Пробую на C# написать перекодирование в UTF-8:
X++:
FileStream fs = File.Open("E:\\data\\1\\test2.txt", FileMode.Open);
StreamReader sr = new StreamReader(fs, Encoding.Default);
string asciText = sr.ReadToEnd();
FileStream fsw = File.OpenWrite(@"E:\\data\\1\\test4.txt");
Byte[] info = new UTF8Encoding(true).GetBytes(asciText);
fsw.Write(info, 0, info.Length);
И опять файл кодируется без BOM символа (Notepad++ определяет кодировку файла как 'Ansi as UTF-8')
Не подскажете как получить файл в кодировке UTF-8 with BOM (просто UTF-8 по мнению Notepad++)?