C# XmlTextWriter允许使用非法的Unicode字符

C# XmlTextWriter允许使用非法的Unicode字符,c#,xml,xmltextwriter,C#,Xml,Xmltextwriter,XmlTextWriter允许0x15和0x1A。有人知道怎么避开这件事吗?如果我序列化一个包含上述非法字符的XML字符串,XmlTextWriter允许这样做,没有例外。有人对此有解决办法吗?FYI,您不应该使用new XmlTextReader()或new XmlTextWriter()。自.NET 2.0以来,它们一直被弃用。使用XmlReader.Create()或XmlWriter.Create()。出于好奇:为什么这些是非法的0x15只是21十进制,这有什么特别之处?在此之前,我刚刚

XmlTextWriter
允许
0x15
0x1A
。有人知道怎么避开这件事吗?如果我序列化一个包含上述非法字符的XML字符串,
XmlTextWriter
允许这样做,没有例外。有人对此有解决办法吗?

FYI,您不应该使用
new XmlTextReader()
new XmlTextWriter()
。自.NET 2.0以来,它们一直被弃用。使用
XmlReader.Create()
XmlWriter.Create()
。出于好奇:为什么这些是非法的
0x15
只是
21
十进制,这有什么特别之处?在此之前,我刚刚对任何“禁止”字符进行了盲替换,但显然这会丢失数据。不幸的是,在XML 1.0中并没有一个很好的解决方法-即使指定为实体,字符仍然无效:(@Jeroenvanevel:只有U+0000到U+001F范围内的几个字符是合法的:(参见@JonSkeet:cheers,这澄清了一些事情。字符集..颤抖