Url编码引号和空格

时间:2011-01-27 18:14:16

标签: c# asp.net-mvc urlencode

我有一些用JavaScript编码的查询文本,但是我遇到了一个用例,我可能需要在服务器端编码相同的文本,并且发生的编码不一样。我需要它是一样的。这是一个例子。

我在搜索框中输入"I like food"并点击search按钮。 JavaScript将其编码为%22I%20like%20food%22

假设我在服务器端的请求对象上获得与字符串相同的值。它看起来像这样:"\"I like food\""

当我使用HttpUtility.UrlEncode(value)时,结果为"%22I+like+food%22"。如果我使用HttpUtility.UrlPathEncode(value),则结果为"\"I%20like%20food\""

所以UrlEncode正在编码我的引号但是使用+字符表示空格。 UrlPathEncode正在对我的空间进行编码,但不对我的转义引号进行编码。

我真的需要它来做两件事,否则搜索代码完全惹恼了我(我无法控制搜索代码)。

提示?

3 个答案:

答案 0 :(得分:54)

UrlPathEncode无法转义",因为它们不需要在路径组件中进行转义。

Uri.EscapeDataString应该做你想做的事。

答案 1 :(得分:9)

您可以选择几个选项,最快的可能是使用UrlEncode,然后执行string.replace将+个字符与%20交换。

这样的东西
HttpUtility.UrlEncode(input).Replace("+", "%20");

答案 2 :(得分:-1)

WebUtility.UrlEncode(str)

将编码所有需要使用%XX格式编码的字符,包括空格。