将数据发送到服务器后,“+”被转换为空格

时间:2011-06-08 06:14:13

标签: c# urlencode

我基本上来自java。但我应该修改一个c#应用程序。此应用程序将文本框的数据发送到服务器。(https连接)

一切正常。只有一个问题。如果文本框中的文本具有“+”字符,则在服务器端它们作为空格到达。意思是,如果文本框中包含“amit + gupta”,那么在服务器端它就会达到“amit gupta”。

*我担心可能会有一些其他组合可能会进一步引起问题。

代码

System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding();
StringBuilder postData = new StringBuilder();
postData.Append("data1="+textBox4.Text);
postData.Append("&data2="+textBox5.Text);
byte[] data = encoding.GetBytes(postData.ToString());

HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(serverUrl);
myRequest.Method = "POST";
myRequest.ContentType = "application/x-www-form-urlencoded";
myRequest.ContentLength = data.Length;

Stream newStream = myRequest.GetRequestStream();
newStream.Write(data, 0, data.Length);

我的观察

根据我的理解,数据应该在发送到服务器之前首先进行URL编码。但...

  

缺少UrlEncode

Visual Studio 2008已经设置用于开发Windows应用程序。在这(我试过3台不同的机器),我找不到UrlEncode()。我也曾探索过System.Web但是: - (

我的问题;

  1. 上述代码是否有问题
  2. UrlEncode()是否仅适用于基于Web的项目
  3. 是否有UrlEncode()的替代品。所以我可以在我的应用程序中使用它
  4. 我应该做一些额外的IDE设置,还是应该添加一些dll。

1 个答案:

答案 0 :(得分:3)

您正在System.Web中寻找HttpUtility.UrlEncode

这需要添加对System.Web.dll的引用。如果您无法添加对该引用的引用,请确保您具有完整的配置文件(而不是客户端配置文件)。如果您需要客户端配置文件,则必须实现自己的编码功能。