我试图将字节数组转换为字符串。字节数组包含一个前导码(如果使用的编码器有其中之一),如果字节数组中没有存储前导码,您必须指定默认编码。
我的代码看起来像这样
public static string ArrayToStringUsingPreambleOrDefaultEncoder(byte[] bytes, Encoding defaultEncoder, out Encoding usedEncoder) {
using (var mem = new MemoryStream(bytes))
using (var reader = new StreamReader(mem, defaultEncoder, true)) {
string result = reader.ReadToEnd();
usedEncoder = reader.CurrentEncoding;
return result;
}
}
但它并没有像我预期的那样奏效。如果未找到前导码,如何使 StreamReader 使用前导码指定的编码或默认编码。我是否真的必须手动将所有已知编码器的前导码与数组的开头进行比较才能找到正确的编码器?