Я получаю файлы в кодировке latin1 или utf8. Получаю как поток в C#. Как я могу определить, что это latin1 ("ISO-8859-1") или UTF-8? Когда я пытаюсь его обнаружить, он всегда определяет его как UTF-8. Этот код не работает, если всегда будет UTF-8.
private Encoding GetUtf8EncodeStream(Stream fileStream)
{
using var reader = new StreamReader(fileStream, true);
var encoding = reader.CurrentEncoding;
if (Equals(encoding, Encoding.UTF8))
{
return Encoding.UTF8;
}
return Encoding.GetEncoding("ISO-8859-1");
}
void Method(){
var encoding = GetUtf8EncodeStream(fileStream);
using (TextReader reader = new StreamReader(fileStream, encoding))
}
Сначала мне нужно узнать кодировку, а затем я прочту ее с этой кодировкой.
Мне нужно знать кодировку, потому что в ней есть специальные символы æ, ø и å. И если я попытаюсь прочитать поток, который имеет кодировку: latin1, и установил для средства чтения потока значение UTF-8, вместо символов будут стоять вопросительные знаки. И если я сделаю это в обратном порядке, где я установил StreamWriter для кодирования UTF-8, и его в latin1, черт возьми, проиграет;)