C# 特殊字符未在.txt文件中读取

C# 特殊字符未在.txt文件中读取,c#,xml,streamreader,C#,Xml,Streamreader,我正在使用流阅读器来读取文本文件 这是.txt文件的内容: </a> Schools's are a suitable public </a> 当我在StreamReader中打印相同的文本时,我得到了”。 因此,问题在于如何将其写入XML或HTML。尝试解决该问题,而不是在StreamReader中查找问题 using (StreamReader inputStream = new StreamReader(filepath, System.Text.Encoding

我正在使用流阅读器来读取文本文件

这是.txt文件的内容:

</a> Schools's are a suitable public </a>

当我在
StreamReader
中打印相同的文本时,我得到了
。 因此,问题在于如何将其写入XML或HTML。尝试解决该问题,而不是在
StreamReader
中查找问题

using (StreamReader inputStream = new StreamReader(filepath, System.Text.Encoding.UTF8))
{
    string line = inputStream.ReadToEnd();
    Console.WriteLine(line);
}

您遇到的问题是,您正在尝试使用xml读取器加载文本文件,即此部分:

XDocument.Load(reader);
如果您看这个问题:,您将看到其他字符也将被删除/需要转义

如果您在调试器中检查
StreamReader
,您将看到它显示了正确的文本,这是调试器显示的内容。因此,您需要在文本文件中读取,最简单的方法是使用或取决于您是否希望结果分别为
string
string[]

string contents = File.ReadAllText(path);
string[] lines = File.ReadAllLines(path);
但是,如果出于某种原因,您确实希望使用
StreamReader
,您可以使用或任何其他适当的读取方法直接从流中读取:

using (StreamReader reader = new StreamReader(path))
{
    string contents = reader.ReadToEnd();
}
但是,请注意,
StreamReader
方法将读取流中的当前位置,因此您可能需要自己设置位置


有关以C语言读取文件的其他方法的列表,请参见以下问题:。

如果是文本格式,为什么要将其加载到xml格式?可能与“特殊字符”的含义重复?如果文件不包含XML,为什么要使用
XDocument.Load
?如果您想读取文本文件,请使用
file.ReadAllText
。此方法可以通过检查大多数Unicode文件前面的BOM字符来检测编码。
是XML中的特殊字符。有关将此内容解析为XML时遇到问题的原因,请参阅。因为是
XDocument
即XML剥离了
而不是
StreamReader
。OP正在尝试使用XML读取器读取文本。这个答案是把它作为文本阅读,这就是为什么它是有效的。OP不应该使用
XDocument
No,因为她已经正确读取了文件。她正在读的字符串将包含完整的内容,包括“。因此,问题在于如何将其写入XML或HMTL。不管是什么。回答得好,不过我注意到,虽然它解决了为什么不起作用的问题,但值得一提的是,解决方案可能是修复正在读取的文件,而不是更改代码。编辑建议它可能是XML(尽管如果这意味着是XML,并且是OP的内容,那么还有许多其他问题)。当然,我已经在这里的评论中提到了这一点,因此您不必再将其添加到答案中@Chris我同意,但是,由于OP已经更改了一次文件内容,我相信我们可能仍然没有完整的文件。在这种情况下,猜测是没有意义的,我只回答一个问题,为什么我在.txt文件中阅读的方式不起作用?是的。我并不是想说你的答案是错的,只是有两种可能是错的,一种是他们读取的文本文件错误,另一种是他们有一个无效的xml文件。事实上,他们说它是一个文本文件,这确实表明你关注它是正确的。
string contents = File.ReadAllText(path);
string[] lines = File.ReadAllLines(path);
using (StreamReader reader = new StreamReader(path))
{
    string contents = reader.ReadToEnd();
}