由于字符的原因,无法从XmlDocument Load-method获得正确的结果

本文关键字:Load-method XmlDocument 结果 于字符 字符 | 更新日期: 2023-09-27 18:02:10

编辑:这是通过改变webservice解释get请求的方式(到UTF-8)解决的。

我向URL发送一个字符串,URL返回一个XML给我。但是,如果我发送特殊字符(如:、ä、ö),生成的XML就不正确。我不能让它工作。

 string name= "abc def åäö";
//name= Uri.EscapeUriString(address); - i also tried this but it messes up the åäö chars in the resulting xml
string uri = "http://blablabla&address=" + name+ "&outputFormat=xml";
System.Xml.XmlDocument x = new System.Xml.XmlDocument();
x.Load(uri);
XmlElement root = x.DocumentElement;
foreach (XmlNode node in root.ChildNodes)
{
     XmlAttribute attr = (XmlAttribute)node.Attributes.GetNamedItem("name");
     System.Windows.Forms.MessageBox.Show(attr.Value);
}

由于字符的原因,无法从XmlDocument Load-method获得正确的结果

我相信你所做的是正确的。您应该最终将字符编码为十六进制数字对,每个数字前面都有一个百分比符号,例如å变成%c3%a5。web服务器/应用服务器应该透明地将这些解码回相应的字符。

也请参阅HttpUtility.UrlEncodeUnicode(string),它将使用另一种编码,尽管我不确定这将由所有web服务器处理。

我不知道这是否有帮助,但请记住这一点。值将转义xml类型转义。但是,似乎不像可能是问题所在。而不是检查attr。值,检查节点。查看是否符合您的期望