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

时间:2014-02-16 01:44:09

标签: 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();
  }

这里的值为=“H \ 0e \ 0l \ 0l \ 0o \ 0”。

1 个答案:

答案 0 :(得分:4)

您在阅读和撰写文件时使用的是不同的编码。

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

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

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