gpt4 book ai didi

c# - StreamReader 返回另一个字符

转载 作者:行者123 更新时间:2023-11-30 19:50:02 26 4
gpt4 key购买 nike

我正在尝试使用接收 FileStream 的 StreamReader 读取文件的内容。该文件内部有一些空格(字符 32),StreamReader 将它们读取为 0(字符 48)。屏幕截图显示了 FileStream 缓冲区和 StreamReader 缓冲区。两者的值都是 32,但是当我调用 Read() 时,它返回 48。我在这里遗漏了什么吗?顺便说一下,代码在 .NET Compact Framework 下运行。

alt text http://www.freeimagehosting.net/uploads/9f72b61bbe.png

读取数据的代码:

public void Read() {
using (StreamReader reader = new StreamReader(InputStream, Encoding.UTF8)) {
foreach (var property in DataObject.EnumerateProperties()) {
OffsetInfo offset = property.GetTextOffset();
reader.BaseStream.Position = offset.Start - 1;
StringBuilder builder = new StringBuilder(offset.Size);
int count = 0;
while (reader.Peek() >= 0 && count < offset.Size) {
char c = (char)reader.Read();
if ((int)c != 32 && c != '\r' && c != '\n') {
builder.Append(c);
count++;
} else {
reader.BaseStream.Position++;
}
}
property.SetValue(DataObject,
Convert.ChangeType(builder.ToString(), property.PropertyType, CultureInfo.CurrentCulture),
null
);
}
}
}

编辑:更改编码无效(既不是 Unicode,也不是默认)

编辑:输入如下所示:

000636920000000532000404100100000001041000000001041000000001031000000000000000000000000000000000000000001730173017301730203020302030203021302130213021300027900267841515150000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000280010000000280010000000280010000020
260007464616011007464816011009005321011009005621011010041621011010041821011013574026011013574226011014564729011014564929011018343318021018343618021020035418021020035618021022583818021022584018021005474302031005474502031010311305031010311505031011265308031011265508031011265508031011274108031021524009
0310215242090310060151130310063110130310160022210310160024210310022837280310022839280310
00206377740002484841000029844400181529330003034081000000000000000000

问题发生在从第三行开始到第四行的空格。

最佳答案

我怀疑您的问题是 Encoding.ASCII。您确定您的文件是以这种方式编码的吗?我敢打赌你的文件实际上是用 Encoding.Unicode 编码的,这就是你遇到零的原因。

在这种情况下,你说你的编码是 UTF-8,所以将你的编码设置为 Encoding.UTF8 看看会发生什么。

关于c# - StreamReader 返回另一个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2834775/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com