首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >从俄罗斯网站读取XML时的编码问题

从俄罗斯网站读取XML时的编码问题
EN

Stack Overflow用户
提问于 2015-01-10 06:07:59
回答 1查看 938关注 0票数 1

我从一家俄罗斯银行的web服务中获取xml值(来源:daily.asp)

我的ASP.NET代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<%@ Page   Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication4.WebForm1" CodePage="65001"  %>

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
    <title></title>
</head>
<body>
<form id="form1" runat="server">
<asp:GridView ID="volutes" runat="server" >
<HeaderStyle BackColor="#df5015" Font-Bold="true" ForeColor="White" />
</asp:GridView>
</form>
</body>
</html>

我的C#代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
            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();

О在结果页I‘m参见:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 Name                                 Value
������������� ������    46,0642

为什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-10 06:19:28

您应该对您的StreamReader使用正确的编码,并将其传递到构造函数中,否则阅读器将默认使用utf-16le:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
using (StreamReader reader = new StreamReader( stream
                                             , Encoding.GetEncoding("windows-1251")
                                             )
      )
{
}
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27877079

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文