c# - 如何使用 streamreader 读取当前编码的 byte[]

标签 c# .net encoding stream streamreader

我想使用 C# 和文件的当前编码读取 byte[]

如 MSDN 中所写,当构造函数没有编码时,默认编码将为 UTF-8:

var reader = new StreamReader(new MemoryStream(data)).

我也试过这个,但仍然得到 UTF-8 格式的文件:

var reader = new StreamReader(new MemoryStream(data),true)

我需要用当前编码读取byte[]

最佳答案

文件没有编码。字节数组没有编码。字节没有编码。编码是将字节转换为文本,反之亦然。

您在文本编辑器等中看到的实际上是程序魔术:编辑器会尝试不同的编码,然后猜测哪个最有意义。这也是您使用 bool 参数启用的功能。如果这不能产生您想要的结果,那么这个魔法就失败了。

var reader = new StreamReader(new MemoryStream(data), Encoding.Default);

将使用操作系统/位置特定的默认编码。如果那仍然不是你想要的,那么你需要完全明确,并告诉流阅读器使用什么确切的编码,例如(作为一个例子,你说你不想要 UTF8):

var reader = new StreamReader(new MemoryStream(data), Encoding.UTF8);

关于c# - 如何使用 streamreader 读取当前编码的 byte[],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16598021/

相关文章:

c# - 在子对象属性上使用 Sum 的 LINQ to Entities 查询问题

c# - 如何从 URL 获取数据并将其保存到 C#.NET 中的二进制文件中,而不会造成编码困惑?

c# - Mootools 幻灯片

C# Keys.Apps 将始终打开 Windows 上下文菜单

c# - 如何设计数据库接口(interface)

c# - 仅包括一个属性,而不是整个数据库行

c# - 分页 IEnumerable 数据集

.net - VB.NET Excel 程序完成后使 EXCEL.EXE float

sql-server - 从 varchar 转换为 nvarchar 是否有数据丢失

Linux:这个 shell 脚本的编码是什么?