我在使用 C# 将挪威语字符写入 XML 文件时遇到问题。我有一个字符串变量,其中包含一些挪威语文本(带有像 æøå 这样的字母)。
我正在使用 XmlTextWriter 编写 XML,将内容写入 MemoryStream,如下所示:
MemoryStream stream = new MemoryStream();
XmlTextWriter xmlTextWriter = new XmlTextWriter(stream, Encoding.GetEncoding("ISO-8859-1"));
xmlTextWriter.Formatting = Formatting.Indented;
xmlTextWriter.WriteStartDocument(); //Start doc
然后我像这样添加我的挪威语文本:
xmlTextWriter.WriteCData(myNorwegianText);
然后我像这样将文件写入磁盘:
FileStream myFile = new FileStream(myPath, FileMode.Create);
StreamWriter sw = new StreamWriter(myFile);
stream.Position = 0;
StreamReader sr = new StreamReader(stream);
string content = sr.ReadToEnd();
sw.Write(content);
sw.Flush();
myFile.Flush();
myFile.Close();
现在的问题是,在这个文件中,所有的挪威字符看起来都很滑稽。
我可能以某种愚蠢的方式做了上面的事情。关于如何修复它有什么建议吗?
最佳答案
为什么要先将 XML 写入 MemoryStream,然后再将其写入实际的文件流?那是相当低效的。如果您直接写入 FileStream,它应该可以工作。
如果你仍然想做双写,不管出于什么原因,做两件事中的一件。要么
确保您使用的 StreamReader 和 StreamWriter 对象全部使用相同编码作为您在 XmlWriter 中使用的编码(不仅仅是 StreamWriter,例如其他人建议)或
不要使用 StreamReader/StreamWriter。相反,只需使用简单的 byte[] 和 Stream.Read/Write 在字节级别复制流。顺便说一句,无论如何,这会更有效率。
关于c# - 使用带有 ISO-8859-1 编码的 XmlTextWriter 编写 XML 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/139260/