我想byte[]
使用文件的当前编码使用 C# 阅读。
正如 MSDN 中所写,当构造函数没有编码时,默认编码将是 UTF-8:
var reader = new StreamReader(new MemoryStream(data)).
我也试过这个,但仍然以 UTF-8 格式获取文件:
var reader = new StreamReader(new MemoryStream(data),true)
我需要byte[]
使用当前编码阅读。
我想byte[]
使用文件的当前编码使用 C# 阅读。
正如 MSDN 中所写,当构造函数没有编码时,默认编码将是 UTF-8:
var reader = new StreamReader(new MemoryStream(data)).
我也试过这个,但仍然以 UTF-8 格式获取文件:
var reader = new StreamReader(new MemoryStream(data),true)
我需要byte[]
使用当前编码阅读。
文件没有编码。字节数组没有编码。一个字节没有编码。编码是将字节转换为文本的东西,反之亦然。
您在文本编辑器等中看到的实际上是程序魔术:编辑器尝试不同的编码,然后猜测哪个最有意义。这也是您使用布尔参数启用的功能。如果这不能产生你想要的东西,那么这个魔法就会失败。
var reader = new StreamReader(new MemoryStream(data), Encoding.Default);
将使用操作系统/位置特定的默认编码。如果这仍然不是您想要的,那么您需要完全明确,并告诉流阅读器要使用的确切编码,例如(例如,您说您不想要 UTF8):
var reader = new StreamReader(new MemoryStream(data), Encoding.UTF8);
我只是尝试利用不同的方式来尝试找出 ByteEncoding 并且不可能这样做,因为正如 Jan 在他的回复中提到的那样,字节数组没有适当的编码。但是,您始终可以获取该值并将类型转换为 UTF8 或 ASCII/Unicode 并测试字符串值,以防您正在执行“Text.EncodingFormat.GetString(byte [] array)”
public static bool IsUnicode(string input)
{
var asciiBytesCount = Encoding.ASCII.GetByteCount(input);
var unicodBytesCount = Encoding.UTF8.GetByteCount(input);
return asciiBytesCount != unicodBytesCount;
}