我正在尝试使用 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/