Я нашел несколько вопросов о проблемах кодирования, прежде чем задавать их, однако они не являются тем, что я хочу. В настоящее время у меня есть два метода, я бы лучше не изменял их.
//FileManager.cs
public byte[] LoadFile(string id);
public FileStream LoadFileStream(string id);
Они работают правильно для всех типов файлов. Теперь у меня есть идентификатор текстового файла (он гарантированно будет .txt
файл), и я хочу получить его содержимое. Я попробовал следующее:
byte[] data = manager.LoadFile(id);
string content = Encoding.UTF8.GetString(data);
Но, очевидно, он не работает для других кодировок, не относящихся к UTF8. Чтобы решить проблему с кодировкой, я сначала попытался получить FileStream
, а затем использовать StreamReader
.
public StreamReader(Stream stream, bool detectEncodingFromByteOrderMarks);
Я надеюсь, что этот повелитель может разрешить кодировку, но я все еще получаю странное содержимое.
using(var stream = manager.LoadFileStream(id))
using(var reader = new StreamReader(stream, true))
{
content = reader.ReadToEnd(); //still incorrect
}
Может быть, я неправильно понял использование detectEncodingFromByteOrderMarks
? И как решить проблему с кодировкой?