C# &引用+&引用;正在将数据发送到服务器后转换为空白

C# &引用+&引用;正在将数据发送到服务器后转换为空白,c#,urlencode,C#,Urlencode,我基本上来自java。但我应该修改一个c#应用程序。此应用程序将文本框的数据发送到服务器。(https连接) 一切正常,只有一个问题。若文本框中的文本包含“+”字符,那个么在服务器端,它们作为空格到达。也就是说,若文本框包含“amit+gupta”,那个么在服务器端它将作为“amit-gupta”到达 *我担心可能还有其他一些组合会导致问题进一步恶化 代码 System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding(); St

我基本上来自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,但:-(

我的问题

  • 上述代码是否有问题
  • UrlEncode()是否仅适用于基于web的项目
  • 是否有UrlEncode()的替代方法,以便我可以在应用程序中使用它
  • 我应该做一些额外的IDE设置还是应该添加一些dll
  • 您正在
    System.Web
    中查找

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

    您正在
    System.Web
    中查找


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

    检查项目使用的.net framework版本,您可能需要完整版本(不仅仅是客户端)。然后url编码应位于system.web中。
    “amit+2gupta”
    应在服务器上解码为
    “amit 2gupta”
    。我不知道2发生了什么。@Gabe,你是对的,这只代表“+”而不是“+2”。thanks@Stefan我使用的是Visual Studio 2008。在每台机器上都会遇到这个问题,而不仅仅是在我的机器上。你必须添加对System.Web.dll的引用。命名空间System.Web是跨多个dll定义的,包括System.dll(AspNetHostingPermission和AspNetHostingPermissionAttribute类),这可能就是您可以浏览名称空间但找不到HttpUtility类的原因。检查项目使用的.net framework的版本,您可能需要完整版本(不仅仅是客户端)。然后url编码应该在system.web中。
    “amit+2gupta”
    应在服务器上解码为
    “amit 2gupta”
    。我不知道2发生了什么。@Gabe,你是对的,这只代表“+”而不是“+2”。thanks@Stefan我使用的是Visual Studio 2008。在每台机器上都会遇到这个问题,而不仅仅是在我的机器上。你必须添加对System.Web.dll的引用。命名空间System.Web是跨多个dll定义的,包括System.dll(AspNetHostingPermission和AspNetHostingPermissionAttribute类)也许这就是你可以探索名称空间但找不到HttpUtility类的原因。这可能是一个愚蠢的行为,但因为我不是.net编码员,所以我希望我能做到这一点。我的问题已经通过添加对System.Web的引用得到了解决。问题解决后,我将对配置文件进行加密。一旦出现“+”g问题,我将标记答案ets已解决。这可能是一个愚蠢的行为,但由于我不是.net编码员,所以我希望我能做到这一点。我的问题已通过添加对System.Web的引用得到解决。自问题解决后,我将对配置文件进行加密。一旦“+”问题得到解决,我将标记答案。