编辑:这是通过改变Web服务如何插入GET请求(到UTF-8)来解决的。
我将一个字符串发送到一个向我返回XML的URL。但是如果我发送特殊字符,例如å,ä,ö,则生成的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);
}
答案 0 :(得分:1)
我相信你所做的是正确的。您应该最终得到编码为十六进制数字对的字符,每个数字前面都有一个百分比符号,例如å
变为%c3%a5
。 Web服务器/应用程序服务器应透明地将这些解码回相应的字符。
另请参阅HttpUtility.UrlEncodeUnicode(string),它将使用替代编码,但我不确定这是否会由所有网络服务器处理。
答案 1 :(得分:1)
我不知道这是否有帮助,但请记住attr.Value将逃避Xml类型的转义。但这并不像似乎那样可能是问题所在。而不是检查attr.Value,检查node.OuterXml以查看它是否符合您的期望。