c# - .NET BinaryReader 不遵守编码

标签 c# .net unicode binary endianness

当使用 System.IO.BinaryReader 读取二进制文件时,使用任何多字节读取方法时字节顺序似乎不受影响。

BinaryReader br = new BinaryReader(fs, System.Text.Encoding.BigEndianUnicode);

BinaryReader br = new BinaryReader(fs, System.Text.Encoding.Unicode);

正在为我产生相同的结果。

这让我很沮丧,因为我在读取数据结构时必须不断地颠倒字节顺序。

Screenshot - Big Endian Unicode

Screenshot - Little Endian Unicode

我已经在 .NET 3 到 4.5 上对此进行了测试

最佳答案

BinaryReader 仅在处理 string 数据时使用 Encoding(几乎就是 ReadString())。 ReadBytes 等不涉及Encoding - 它只是读取二进制数据。由于您只调用 ReadBytes,因此永远不会查看此 (Encoding)。

如果数据乱序,则听起来该文件不是使用 BinaryWriter 创建的。如果它不是用 BinaryWriter 创建的,那么 BinaryReader 可能就没那么有用了——你可以只使用 Stream

关于c# - .NET BinaryReader 不遵守编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12907677/

相关文章:

sql-server - PowerShell 中 Invoke-Sqlcmd 的 Unicode 支持

bash - shell 脚本 (macOS) : print escaped Unicode character from a plist string

c# - 将string []从批处理文件(包含双引号“)传递到powershell脚本

c# - 什么是更好、更干净的使用 List<T> 的方法

c# - 拖动多个选定的控件

.NET - 部署 WCF 客户端,没有 app.config

c# - 对具有相同签名的两个方法的互斥约束

c# - 由于 Unresolved 依赖关系,无法使用 Winforms 控件

c# - AppDomain.CurrentDomain.BaseDirectory 在运行测试后发生变化?

java - Apache Poi - 将外文字符写入 Excel 97/2003(即中文、日文等)