不在.txt文件中读取的特殊字符

时间:2017-05-04 08:45:32

标签: c# xml streamreader

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

这是.txt文件的内容:

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

当我读到该文字时,我得到了:

<a>Schoolss are a suitable public<a>

正如您所看到的,我没有收到报价。如何在流阅读器中接收特殊字符?

我使用了以下代码:

using (StreamReader reader = new StreamReader(CommonGetSet.FileName, System.Text.Encoding.ASCII))
{
    string text = reader.ReadToEnd();
    docKeyword = XDocument.Parse(text);
}

2 个答案:

答案 0 :(得分:2)

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

XDocument.Load(reader);

如果您查看此问题:What characters do I need to escape in XML documents?,您会看到其他字符也会被删除/需要转义。

如果您检查调试器中的StreamReader,您会看到它显示正确的文本,answer by @JinsPeter显示的内容。因此,您需要阅读文本文件,最简单的方法是使用File.ReadAllTextFile.ReadAllLines,具体取决于您是希望结果分别为string还是string[]

string contents = File.ReadAllText(path);
string[] lines = File.ReadAllLines(path);

但是,如果由于某种原因您确实想要使用StreamReader,则可以使用ReadToEndReadLine或任何其他适当的读取方法直接从流中读取:

using (StreamReader reader = new StreamReader(path))
{
    string contents = reader.ReadToEnd();
}

但请注意,StreamReader方法将从流中的当前位置读取,因此您可能需要自己设置位置。

有关在C#中读取文件的其他方式的列表,请参阅此问题:How to read an entire file to a string using C#?

答案 1 :(得分:1)

当我在StreamReader内打印相同的文字时,我得到了'。 所以问题在于将其写入XML或HTML。尝试解决这个问题,而不是在StreamReader中找到问题。

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