如何读取字节[]与当前编码使用流阅读器



我想用c#读取byte[]文件的当前编码。

在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);

将使用OS/Location特定的默认编码。如果这仍然不是您想要的,那么您需要完全明确,并告诉流阅读器要使用的确切编码,例如(只是作为一个例子,您说您不想要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;
}

相关内容

  • 没有找到相关文章

最新更新