我有需要解析的MemoryStream数据(HTML POST数据)。 将其转换为字符串会得到如下结果
key1=value+1&key2=val++2
现在的问题是,所有这些+都是html中的空格。不知道为什么空间会转换为+
这是我将MemoryStream转换为字符串的方式
Encoding.UTF8.GetString(request.PostData.ToArray())
答案 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#代码生成器,向您展示如何将正则表达式转换为代码。