C#解析HTML发布数据

时间:2020-05-22 00:19:00

标签: c# parsing character-encoding

我有需要解析的MemoryStream数据(HTML POST数据)。 将其转换为字符串会得到如下结果

key1=value+1&key2=val++2

现在的问题是,所有这些+都是html中的空格。不知道为什么空间会转换为+

这是我将MemoryStream转换为字符串的方式

Encoding.UTF8.GetString(request.PostData.ToArray())

2 个答案:

答案 0 :(得分:0)

如果您使用的是Content-Type中的application/x-www-form-urlencoded,则您的数据需要进行url编码。

使用System.Web.HttpUtility.UrlEncode()

using System.Web;
var data = HttpUtility.UrlEncode(request.PostData);

MSDN中查看更多信息。

您还可以将JSON格式用于POST。

答案 1 :(得分:0)

我想您要检索的数据是用URL规则编码的。
您可以从W3c中学读this simple article,了解为什么将数据编码为这种格式。

要对帖子字符串进行编码/解码,可以使用以下两种方法:

System.Web.HttpUtility.UrlEncode(yourString); // Encode
System.Web.HttpUtility.UrlDecode(yourString); // Decode

您可以找到有关URL操作功能here的更多信息。

注意::如果需要对字符串数组进行编码/解码,则需要使用for或foreach语句枚举集合。请记住,使用这种循环,您不能在枚举期间直接更改循环变量值(因此可能需要一个临时存储变量)。

至少,为了有效地解析字符串,建议您使用System.Text.RegularExpression.Regex类并学习正则表达式“ language”。
您可以找到有关如何使用正则表达式here的示例; Regex101网站上还有一个C#代码生成器,向您展示如何将正则表达式转换为代码。