Следующий код отлично работает для меня, используя класс StreamReader
:
using (var reader = new StreamReader(fileName, defaultEncodingIfNoBom, true))
{
reader.Peek(); // you need this!
var encoding = reader.CurrentEncoding;
}
Трюк заключается в использовании вызова Peek
, иначе .NET ничего не сделал (и он не прочитал преамбулу, спецификацию). Конечно, если вы используете любой другой вызов ReadXXX
перед проверкой кодировки, он тоже работает.
Если в файле нет спецификации, будет использоваться кодировка defaultEncodingIfNoBom
. Существует также StreamReader без этого метода перегрузки (в этом случае кодировка по умолчанию (ANSI) будет использоваться как defaultEncodingIfNoBom), но я рекомендую определить, что вы считаете кодировкой по умолчанию в своем контексте.
I успешно прошли тестирование с файлами с спецификацией для UTF8, UTF16 / Unicode (LE & amp; BE) и UTF32 (LE & amp; BE). Это не работает для UTF7.
Это известная проблема со службой ...
Даже в этом случае из-за распределенного характера службы может потребоваться 15 минут, прежде чем файлы, сообщения и объекты событий станут доступны для использования этому пользователю через Microsoft Graph API.
blockquote>