如何将网页unicode转换为ascii?

时间:2019-01-25 16:45:56

标签: c# encoding webclient non-ascii-characters

我正在尝试将网页从我不理解的格式转换为ascii,以便可以查找某些数据。我使用带有网页URL的webclient检索数据,然后使用编码将数据从我认为是unicode的内容转换为ascii,但格式完全不变。下面是我的代码:

WebClient web = new WebClient();
string page = "https://www.myurl.com/";

Stream data = web.OpenRead(page);
StreamReader reader1 = new StreamReader(data);
string input = reader1.ReadToEnd();
Encoding unicode = Encoding.Unicode;
Encoding ascii = Encoding.ASCII;

string webpage = ascii.GetString(
  Encoding.Convert(unicode, ascii, unicode.GetBytes(input))
);

以下是网页数据的外观,与输入数据相同,这表明我的转换无效。

     \"sprited\":true,\"spriteCssClass\":\"sx_a11c08\",\"spriteMapCssClass\":\"sp_SN-oNOqlzVS\"},\"505789\":{\"sprited\":true,\"spriteCssClass\":\"sx_5219b1\",\"spriteMapCssClass\":\"sp_SN-oNOqlzVS\"},\"505782\":{\"sprited\":true,\"spriteCssClass\":\"sx_c0671f\",\"spriteMapCssClass\":\"sp_SN-oNOqlzVS\"},\"505794\":{\"sprited\":true,\"spriteCssClass\":\"sx_8cf344\",\"spriteMapCssClass\":\"sp_SN-oNOqlzVS\"},\"495429\": 

有人知道这是什么类型的数据,以及如何将其转换为我可以理解的数据?当我在浏览器上显示网页的页面源时,这些奇怪的数据都不会显示出来。换句话说,我从网络客户端获得的数据看起来根本不像浏览器中的页面源。

2 个答案:

答案 0 :(得分:0)

下面是完整的网页数据吗?两端看起来都不完整,对我而言,它看起来像JSON数据。您可以使用JavaScriptSerializer类将其转换为C#对象。

JavaScriptSerializer json_serializer = new JavaScriptSerializer();
Test resultingData = (Test)json_serializer.DeserializeObject(your_data);

答案 1 :(得分:0)

如果您想从请求中读取JSON,请like here

var json = web.DownloadString(page);

然后,您需要将字符串反序列化为对象,如果知道响应的模型类型,则可以这样做,让它的ResponseType开始。

using Newtonsoft.Json;

...

var result = JsonConvert.DeserializeObject<ResponseType>(json);

有一个名为Facebook的NuGet程序包,您可以将其导入到项目中。这将为您提供一些可能与类型匹配的模型。


如果您不知道响应的类型,则可以执行以下操作,

using Newtonsoft.Json.Linq;

...

var jObject = JObject.Parse(json);

然后您可以use LINQ to query the object.