我收到一个编码为“ISO-8859-1”(Latin-1)
的XML文件在文件(以及其他标签)中,我有<OtherText>Example "content" And ─</OtherText>
现在出于某种原因,当我将其加载到XMLTextReader并执行“XmlReader.Value”以返回值时,它返回:“content”和─
然后,当遇到只接受Latin-1编码的数据库时,显然会出现错误。
我尝试了以下内容:
互联网和StackOverflow上的几种不同的方法和不同的方法。
我理解.NET字符串是UTF-16,但我不明白为什么,一个完全Latin-1格式的XML文件,带有CORRECT标记,用于存在与旧数据库兼容的UTF-8字符和web(用于HTML标记等),它只是覆盖它并输出UTF-8编码的字符串ANYWAY。
现在除了编写我自己的自定义文本解析器之外还有其他解决方法吗?
答案 0 :(得分:3)
我不相信这是编码的问题。您所看到的是未转义的XML字符串。
问题是"
是XML转义字符,因此XMLTextReader将为您取消转义。
如果你改变了这个:
<OtherText>Example "content" And ─</OtherText>
对此:
<OtherText>Example &quot;content&quot; And &#9472;</OtherText>
然后
XmlReader.Value = ""content" And ─";
您需要将您的值包装在CDATA中,以便解析器忽略它。
另一种选择是重新转义字符串:
using System.Security;
....
....
string val = SecurityElement.Escape(xmlReader.Value);