作者:wugege36 | 来源:互联网 | 2023-05-27 14:20
我从俄罗斯银行的网络服务获取xml中的值(来源:http://www.cbr.ru/scripts/XML_daily.asp)
我的ASP.NET代码:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication4.WebForm1" CodePage="65001" %>
我的C#代码:
DataTable dt = new DataTable();
WebClient client = new WebClient();
Stream stream = client.OpenRead("http://www.cbr.ru/scripts/XML_daily.asp");
StreamReader reader = new StreamReader(stream);
String cOntent= reader.ReadToEnd();
XmlDocument xml = new XmlDocument();
xml.LoadXml(content);
dt.Columns.Add("Name", typeof(string));
dt.Columns.Add("Value", typeof(string));
XmlNodeList nodeList = xml.SelectNodes("/ValCurs/Valute");
foreach (XmlNode node in nodeList)
{
DataRow dtrow = dt.NewRow();
dtrow["Name"] = node["Name"].InnerText;
dtrow["Value"] = node["Value"].InnerText;
dt.Rows.Add(dtrow);
}
volutes.DataSource = dt;
volutes.DataBind();
Оn结果页面我看到:
Name Value
????????????? ?????? 46,0642
为什么?
1> Patrick Hofm..:
你应该使用正确的编码StreamReader
并在构造函数中传递它,否则读者默认使用UTF-16 LE:
using (StreamReader reader = new StreamReader( stream
, Encoding.GetEncoding("windows-1251")
)
)
{
}