Итак, я читаю файл, который можно закодировать в любой кодировке. Но для этого примера допустим UTF-16. Мне нужно прочитать файл в БАЙТАХ (таким образом, используя FileStream
, а не StreamReader
), И фрагментами по 1 МБ, а затем преобразовать байтовый буфер UTF-16 в байтовый буфер UTF8.
Что я Я делаю прямо сейчас:
char[] charBuffer = new char[bufferSize];
Encoding.Unicode.GetChars(utf16Buffer, 0, read, charBuffer, 0);
byte[] utf8Array = new byte[Encoding.UTF8.GetByteCount(charBuffer, 0, charsRead)];
int numBytes = Encoding.UTF8.GetBytes(charBuffer, 0, charsRead, utf8Array, 0);
//Do something with utf8Array
//This is what Encoding.Convert does in the background.
На самом деле это не так уж и медленно, но мне было интересно, есть ли более быстрый способ. Спасибо.