c# - 为什么许多 XML 序列化示例会去除特定字符?

标签 c# character-encoding xml-serialization

这里的许多 C# XML 序列化示例都包含类似的代码

xml = xml.Substring(xml.IndexOf(Convert.ToChar(60)));
xml = xml.Substring(0, (xml.LastIndexOf(Convert.ToChar(62)) + 1));

我知道这是丢弃 < 和 > 周围的任何(不可打印/无效)字符,但为什么这些字符首先存在?

假设 UTF16 使用 Encoding.Unicode 和 XmlTextWriter。

最佳答案

Assume UTF16 using Encoding.Unicode with an XmlTextWriter.

UTF 格式实际上并不是 XmlTextWriter 的构建者。如果向 XmlTextWriter 提供一个包含 xml 变量的 StringReader,则问题可能存在于最初从磁盘读取 xml 的方式中。

文本文件通常包含称为 BOM ( Byte Order Mark ) 的编码前导码。当读取错误时,文件内容前会出现几个“奇怪”的字符。

我希望您的代码是一个穷人尝试从错误读取的文本文件中删除 BOM 的尝试。

关于c# - 为什么许多 XML 序列化示例会去除特定字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6934101/

相关文章:

c# - 在 WPF 中将形状转换为可重用的几何图形

oracle - 调用 Oracle PL/SQL 过程时使用什么编码

python - 从 Python 中的字符串中获取 x 个最低有效位

xml - 如何使用 XmlSerializer 指定 XmlAttributes 的顺序

c# - 如何在两个 XML 标记之间放置一个值并使用 XmlDictionaryWriter 为 XML 元素的名称添加前缀?

c# - 使用 DataSource 属性在 DataGridView 中排序

C# 关闭时最小化到系统托盘

c# - 使用 System.Data 而不是 System.Data.SqlClient

unicode - 这个八位字节流如何被解释为希伯来语 UTF-8 编码?

java - 如何使用 SimpleXml 将 xml 反序列化为自定义属性(及其值)的映射?