【发布时间】:2020-11-22 11:20:47
【问题描述】:
所以我正在读取一个可以以任何编码方式编码的文件。但是对于这个例子,让我们说 UTF-16。我需要以 BYTES 格式读取文件(所以使用 FileStream,而不是 StreamReader),并以 1MB 为单位,然后将 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.
这实际上并没有那么慢,但我想知道是否有更快的方法。谢谢。
【问题讨论】:
-
总有更快的方法。您需要考虑的问题是这是否对您来说足够快?
-
你是对的。这对我来说可能已经足够快了。但是,我想知道我是否在做一些非常愚蠢的事情(比如在字节之间执行额外的转换)。但是,如果有一种方法可以更快地做到这一点,那就太好了。
标签: c# .net unicode encoding utf-8