gpt4 book ai didi

C#:保护 XmlTextReader 免受偶尔出现的 Unicode 字符的影响

转载 作者:数据小太阳 更新时间:2023-10-29 02:32:14 26 4
gpt4 key购买 nike

在 C# 中,我有一个直接从 HTTP 响应创建的 XmlTextReader(我无法控制响应的 XML 内容)。

HttpWebResponse response = (HttpWebResponse)request.GetResponse();
XmlTextReader reader = new XmlTextReader(response.GetResponseStream());

它有效,但有时其中一个 XML 元素节点将包含一个 Unicode 字符(例如“é”),这会让读者感到困惑。我尝试使用带有声明编码的 StreamReader,但现在 XmlTextReader 在第一行退出:“数据无效。第 1 行,位置 1”:

StreamReader sReader = new StreamReader(response.GetResponseStream(), System.Text.Encoding.Unicode);
XmlTextReader reader = new XmlTextReader(sReader);

有办法解决这个问题吗?或者,有没有办法阻止 XmlTextReader 解析具有潜在违规字符的元素(我知道它的名字)?我不关心那个特定的元素,我只是不想让它绊倒读者。

编辑:快速修复:将响应读入 StringBuilder(“sb”):

sb.Replace("é", "e");
StringReader strReader = new StringReader(sb.ToString());
XmlTextReader reader = new XmlTextReader(strReader);

最佳答案

它不是 Unicode 字符,它是一个无效字符(编码不正确)。

没有办法让 XmlTextReader 免受无效 XML 的影响。你需要要么

  • 修复服务器端以正确编码字符
  • 自己对文本进行预处理

根据 UTF8,所有此类字符 ("é") 都使用 2 或 3 个字节(或更多)进行编码。您可以使用十六进制编辑器来验证它。

关于C#:保护 XmlTextReader 免受偶尔出现的 Unicode 字符的影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5868414/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com