c# - Stream Reader 无法正确读取标点符号
问题描述
我创建了一个 C# WCF Web 服务,它接受 Stream 输入,因为请求的主体在 x-www-form-urlencoded 中传递。当我收到我的请求时,我使用以下内容来读取流的内容:
public static Dictionary<string, string> ParseInput(Stream input)
{
Dictionary<string, string> ReturnedData = new Dictionary<string, string>();
try
{
string strInput = new StreamReader(input, System.Text.Encoding.UTF8).ReadToEnd();
string[] inputs = strInput.Split('&');
foreach (var item in inputs)
{
string[] keyValue = item.Split('=');
ReturnedData.Add(keyValue[0], keyValue[1]);
}
}
catch (Exception ex)
{
Tracing.IAConnectorTopic.exception(new Exception($"Error parsing input body: {ex.Message}"));
}
return ReturnedData;
}
我发现的问题是输入是否如下所示:
Input=这是测试数据+更多数据!
StreamReader 将返回:
输入=This%20is%20test%20data%20%2B%20more%20data%21
如何停止流阅读器转换空格和“+”或任何其他特殊字符。
我已经尝试更改编码类型,但它不起作用。
解决方案
推荐阅读
- encryption - 如何在没有私钥的情况下从 PEM 格式的 ECC 公钥中获取 X 和 Y 分量?
- sql - 如何选择并加入具有最大日期的字段?
- node.js - 进行反应构建后路由不起作用
- python - 在烧瓶中将 mongodb 文档作为文本返回
- angular - Angular Service Worker 缓存和非删除性能策略
- debugging - 在 Mobile 中运行 Hybris 开发环境进行调试
- php - PhpStorm index.css 文件不起作用,即使 index.css 的内容为空,页面还是和以前一样?
- firebase - Flutter:最小化 Firestore 读/写操作
- python - GroupBy DataFrame 到列表列
- php - 如何在 boostrap SB Admin 2 中制作搜索框