c# - C# 中的 BinaryReader 读取字符串所有字符之间的 '\0'

标签 c# binaryreader binarywriter

我正在尝试使用 c# BinaryWriter 和 BinaryReader 类写入和读取二进制文件。 当我将字符串存储在文件中时,它会正确存储它,但是当我尝试读取它时,它会返回一个字符串,该字符串在字符串中的每个替代位置上都有“\0”字符。

代码如下:

 public void writeBinary(BinaryWriter bw)
 {
     bw.Write("Hello");
 }

 public void readBinary(BinaryReader br)
 {
     BinaryReader br = new BinaryReader(fs);
     String s;
     s = br.ReadString();
  }

这里 s 的值为 = "H\0e\0l\0l\0o\0"。

最佳答案

您在读取和写入文件时使用不同的编码。

写入文件时使用 UTF-16,因此每个字符最终都是 16 位字符代码,即两个字节。

读取文件时您使用的是 UTF-8 或某些 8 位编码,因此每个字节最终将成为一个字符。

选择一种编码并用于读取和写入文件。

关于c# - C# 中的 BinaryReader 读取字符串所有字符之间的 '\0',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21806197/

相关文章:

c# - 您可以在 SSIS 中重复使用代码吗?你能以编程方式更改源/目标吗?

c# - 需要与 MAC 建立有效连接。请确保已建立连接

c# - 从 byte[] 转换为字符串

c# - C++ 中是否有 BinaryReader 来读取从 C# 中的 BinaryWriter 写入的数据?

c# - 打开 BinaryReader 时使用 Stream.Seek 是否安全?

c# - MSSQL参数消耗更多时间

C# 获取exe文件的默认图标

c# - 在 C# 中使用 BinaryWriter 将文件添加到 zip 文件时内存不足

c# - 如何将 List<int> 写入二进制文件(4 字节长)?

c# - 如何使用 BinaryReader 并将数据正确输入文件?