首页 > 解决方案 > 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

如何停止流阅读器转换空格和“+”或任何其他特殊字符。

我已经尝试更改编码类型,但它不起作用。

标签: c#wcf

解决方案


推荐阅读